我正在尝试使用ng-click更改指令控制器的$ scope。
我有一个简单的按钮:
<button ng-click="showEnterKeyField = !showEnterKeyField">btn {{showEnterKeyField}}</button>
此代码有效。我的意思是,我们会选择(如按钮 .text()):
btn true
btn false
btn true
... etc
但在控制器中我们有:
$scope.$watch('showEnterKeyField', function(val) {
console.log(val);
}, true);
在控制台中根本没有日志。
接下来我要做的就是在test()
内运行一些ng-click
fn:
<button ng-click="test()">btn {{showEnterKeyField}}</button>
令我惊讶的是,这段代码与上面的代码完全相同:
btn true
btn false
btn true
... etc
这次我在控制台中看到了记录。
为什么范围在第一种情况下没有变化?感谢。
更新
当然,这是我的$scope.test()
:
$scope.test = function() {
$scope.showEnterKeyField = !$scope.showEnterKeyField;
};
答案 0 :(得分:1)
您需要首先在控制器范围上定义属性(在本例中为showEnterKeyField
),因此它将由ngClick指令继承。如果没有定义, ngClick指令将在其自己的子范围上创建属性 - 因此您无法在控制器(父)范围内查看它。
只需将以下内容添加到您的控制器:
$scope.showEnterKeyField = false; // or some other initial value
请参阅:JS Bin