Angularjs 对属性更改作出反应的指令
我有一个指令,带有一个属性: html:Angularjs 对属性更改作出反应的指令,angularjs,Angularjs,我有一个指令,带有一个属性: html: <my-directive id="test" myattr="50"></my-directive> 但我找不到一种方法来“捕捉”指令中的变化 我想要一些修改JSFIDLE的帮助,以便: 函数change在jquery调用之后调用 输入值始终等于myattr 您需要将myattr的值存储为作用域上的属性,而不是属性上的值 您的指令正确,您还需要连接控制器 var myApp=angular.module('myApp',[]
<my-directive id="test" myattr="50"></my-directive>
但我找不到一种方法来“捕捉”指令中的变化
我想要一些修改JSFIDLE的帮助,以便:
change
在jquery调用之后调用myattr
您需要将myattr的值存储为作用域上的属性,而不是属性上的值 您的指令正确,您还需要连接控制器
var myApp=angular.module('myApp',[]);
myApp.controller('MainController',函数($scope){
$scope.calculate=函数(){
//你的逻辑在这里
警报($scope.val);
}
});
myApp.directive('myDirective',function(){
变量链接=函数(范围、元素、属性){
scope.change=函数(){
log(“更改”+scope.myattr);
};
};
返回{
限制:'E',
模板:“”,
范围:{
myattr:“=”
},
链接:链接
};
});代码>
我的值:{{val}}
好啊
您缺少的是在输入更新后触发angular侦听的事件侦听器;
myApp.directive('myDirective', function() {
var link = function(scope, element, attrs) {
scope.$watch('myattr', function(value) {
element.attr('myattr', value);
});
scope.change = function() {
// some code
};
};
return {
restrict: 'E',
template: '<input type="text" ng-change="change()" ng-model="myattr"/>',
scope: {myattr: '='},
link: link
};
});
$('#test').attr('myattr', Math.random() * 100);