【发布时间】:2015-03-26 16:17:34
【问题描述】:
我想更新控制器中的数字。所以我有一个控制器。
$scope.someNumber = 5;
$scope.addNumber = function(){
$scope.someNumber ++;
console.log($scope.someNumber); // This outputs 6, 7, 8, etc
}
然后我显示那个数字,当我刷新页面时它就起作用了。
<span ng-controller="myController">{{someNumber}}</span>
现在我想在单击某些内容时致电addNumber()。这个div 包含在一些与ng-repeat 重复的代码中。
<div ng-click="addNumber()">Add +1!</div>
点击有效,因为addNumber() 输出了正确的新数字。但由于某种原因,span 没有更新为新值,而是始终显示5。我打电话给$scope.$apply(),但我得到了$apply already in progress error。
我是 Angular 的新手,我想我一定遗漏了一些非常明显的东西。
编辑:
我已将点击添加到 span,现在它已更新。
<span ng-controller="myController" ng-click="addNumber()">{{someNumber}}</span>
这是什么意思?
【问题讨论】:
-
向我们展示更多代码。也许你的作用域层次有问题。
-
你能告诉我 plunker 的结果吗?
-
你能在 plunkr 中添加这段代码吗?
-
带有
ng-click属性的按钮(或div)应该在控制器内部而不是外部 -
只是为了让 Chtiwi Malek cmets 清楚,在您之前的配置中,控制器的范围是 span 元素。因此,所有函数和变量都在该特定范围和任何子范围中声明。因此,将 div 放在 span 元素之外,div 无法访问您创建的范围。
标签: javascript angularjs angularjs-scope