我的目标是每当服务中的值发生变化时更新控制器变量值。
vm.changeMe;
$scope.$watch(function() { return service.value }, function(new, old) {
// does not have access to vm.changeMe
})
我已经粘贴了一个更完整的例子,但我的一般问题是;如何在$ watch回调中设置控制器变量?
https://gist.github.com/guyjacks/32498e02df732445bdfe
我正在使用Angular 1.4,而我正在使用controllerAs语法。
答案 0 :(得分:0)
根本不要使用def print_even_numbers(number_list):
even_numbers = [] # define the empty list of even numbers
for number in number_list:
if number % 2 == 0: # check if number is even
even_numbers.append(number) # if it is, store it
return even_numbers # Return the list of even numbers
。您只需将控制器变量绑定到服务变量即可。在您的控制器中,执行:
$watch
由于charlietfl的评论,我将编辑说你可以在范围内引用服务本身,但我不确定是否推荐:
vm.changeMe = service.value;
然后,您将获得范围内的更改以及服务中的更改。
答案 1 :(得分:0)
在我的应用中,有多个控制器。在每个控制器中,我分配"这个"到" vm。
var vm = this;
我有几个控制器,我忘了宣布" vm"用" var"
// bad
vm = this;
// good
var vm = this;
结果," vm"在$ scope里面。$ watch回调引用了另一个控制器。