我正在创建一个处理属性值数据的指令。该指令仅用作元素的属性。所以现在我只想在调用它时运行一个函数
指令调用如下:
<div rest="accounts">
{{testing}}
</div>
指令定义如下:
app.directive("rest", [function(){
return {
restrict: 'A',
scope: {
rest: '='
},
link: function(scope, element, attrs, ctrl) {
console.log(scope);
}
};
}])
每当我使用该指令时,日志会将属性rest
显示为undefined
..帐户只是一个字符串,因为我想首先测试该指令,但我还不知道为什么它总是未定义,即使使用$watch
这样:
app.directive("rest", [function(){
return {
restrict: 'A',
scope: {
rest: '='
},
link: function(scope, element, attrs, ctrl) {
scope.$watch('rest', function(data){
console.log(data); //Still undefined
});
}
};
}])
答案 0 :(得分:1)
用于传递值的方法是传递变量引用而不是字符串值。
在HTML中使用rest="accounts"
,范围中的=
意味着双向绑定,其中内部属性scope.rest
绑定到外部属性$scope.accounts
。
如果始终打算传递字符串,则应在scope属性中使用@
。这意味着rest
与字符串值之间的单向绑定。
您也可以在不定义$scope.accounts
的情况下使用指令,方法是将您的值作为字符串文字提供,即rest="'accounts'"
。但是,由于嵌套引号的繁琐性,这种形式应该谨慎使用。