【发布时间】:2014-02-18 12:50:21
【问题描述】:
我正在使用 AngularJS,我想观察一个变量是否发生变化,并减少另一个变量。这是我所拥有的:
$scope.$watch('watchMe', function () {
$scope.decreaseMe--;
)
watchMe 变量适用于所有范围。我只有一个控制器,其中包含更改 watchMe 的功能以及手表。
每次更改 watchMe 时,Watch 都会运行两次,我知道这就是 Angular 的工作方式。但是,这意味着 reductionMe 是错误的,因为它也会减少两倍。
我尝试比较旧值和新值,但无法正常工作。
我正在输出旧/新/减少的值,这就是我在 watchMe 更改一次时得到的结果:
old: 7 new: 8
decreasing 5
old: 7 new: 8
decreasing 4
watchMe 更改时,我应该怎么做才能只减少一次 reduceMe?
更新:
试图制作一个 Plunkr 来显示这一点,但在 Plunkr 中 $watch 只触发一次..
【问题讨论】:
-
你能告诉我们,你是如何比较新旧价值的吗?
-
小提琴或笨蛋在这里会很有帮助。
-
watchMe 如何与所有范围共享?除非它的 rootscope 我不明白。
-
我会尽快添加 fiddle/plunkr。至于共享数据部分,我按照这个例子:github.com/mhevery/angular-node-socketio/tree/master/public
-
@Michael 我按照下面 acrmuui 提供的答案中的建议进行了比较。但我没有让它工作(见我对那个答案的评论)
标签: javascript angularjs angularjs-scope watch