Ответ 1
Вот один из методов работы:
Вы должны привязать этот атрибут в области видимости как модель области с типом функции. Таким образом, вы можете выполнить это, когда вам нужно в другой (директивной) sope
HTML
<body ng-controller="MainCtrl">
Value: {{value}}!
<button customattr whattodo="addValue">Add</button>
</body>
JS
angular.module('component', [])
.controller('MainCtrl', function($scope) {
$scope.value = 1;
$scope.addValue = function(val){
alert(val);
$scope.value = val;
}
});
.directive('customattr', function () {
return {
restrict: 'A',
scope: {
whattodo: "=" // or ' someOtherScopeName: "=whattodo" '
},
link: function (scope, element, attrs) {
var myVar = 5;
scope.whattodo(myVar); // or ' scope.someOtherScopeName(myVar) '
}
};
});
Вот код на plunker
= or = attr - устанавливает двунаправленную привязку между локальным свойством scope и свойством родительской области имени, определяемым через значение атрибута attr. Если имя attr не указано, атрибут Предполагается, что имя совпадает с именем локального. Определенное и видимое определение области: { localModel: '= myAttr'}, то свойство scope widget localModel будет отражают значение parentModel в родительской области. Любые изменения в parentModel будет отображаться в localModel и любые изменения в localModel будет отображаться в parentModel