无法通过ng-click更改角度$ scope

时间:2014-07-24 11:58:52

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试使用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;
};

1 个答案:

答案 0 :(得分:1)

您需要首先在控制器范围上定义属性(在本例中为showEnterKeyField),因此它将由ngClick指令继承。如果没有定义, ngClick指令将在其自己的子范围上创建属性 - 因此您无法在控制器(父)范围内查看它。

只需将以下内容添加到您的控制器:

$scope.showEnterKeyField = false; // or some other initial value

请参阅:JS Bin