$ watch处理程序无权访问控制器

时间:2015-10-09 20:14:07

标签: angularjs

我的目标是每当服务中的值发生变化时更新控制器变量值。

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语法。

2 个答案:

答案 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回调引用了另一个控制器。