链接小提琴包含一个带<select>
的简单指令。我想通过在外部控制器中设置变量来禁用<select>
标记。在devtools中,我看到ng-disabled的值从false
更改为true
,但<select>
仍然有效。有人可以帮我解决我做错的事吗?
答案 0 :(得分:4)
尝试:
.directive( 'myTag', function() {
return {
restrict: 'E',
scope: {
isDisabled: '=' //use 2-way binding instead.
},
template: '<select ng-disabled="isDisabled"><option>not disabled</option></select>'
};
});
HTML:
<my-tag is-disabled="isDisabled"></my-tag>
答案 1 :(得分:2)
这是因为当使用“@”时,isDisabled是在字符串处计算的,而不是布尔值。 isDisabled是一个表达式,因此你应该使用“&amp;”把它传递给你的指令。
.directive( 'myTag', function() {
return {
restrict: 'E',
scope: {
isDisabled: '&'
},
template: '<select ng-disabled="isDisabled()"><option>not disabled</option></select>',
};
});
小提琴:http://jsfiddle.net/bulbul/PRsH7/16/
更多参考:http://onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope/ What is the difference between '@' and '=' in directive scope in AngularJS?
您可能还想观看John Lindquist关于指令的精彩视频:https://egghead.io/search?q=directive