试图找出服务数据的$ watch

时间:2013-10-20 23:52:35

标签: angularjs

我正在使用一项服务来“维护”用户在我的小角应用程序中正在处理的当前对象。我遇到了一个问题,我使用的手表没有开火,我不确定为什么。我发现了使用函数作为监视表达式的多个示例,但尚未使用一个函数。我在这里设置了一个服务和控制器的简单小提琴:

$scope.$watch('$foo.getCurrent()', function (nn, oo, scope) {
    scope.currentFoo = $foo.getCurrent();
});

JS Fiddle

清除按钮假设“重置”当前对象,通过$ watch将表单重置为空状态。有人可能会打我的脑袋,告诉我我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

更新了你的小提琴

http://jsfiddle.net/n2Bjp/37/

不要认为您希望在触发的函数中传递范围,并使用函数作为$ watch调用的第一个参数。

$scope.$watch(function() {return $foo.getCurrent()}, function (nn, oo) {
    $scope.currentFoo = $foo.getCurrent();
}, true);

相信使用仅适用于可在控制器范围内解析的属性的字符串。在任何情况下使用函数作为第一个参数返回你要检查的东西总是有效(如果事情的检查改变它就不要这样做。)