javascript - 工厂内的$watch

标签 javascript angularjs

我有一个在菜单和页面其他元素之间使用的共享服务工厂。

angular.module('shared_service', []).
    factory('Shared', function($scope){
        var shared_service = {
            something: 'something',
            something_else: 'something_else'
        };

        //I want to watch something so I can change something_else
        //$scope.$watch('shared_service.something', function(){
        //    something_else something_else + 1
        //}
        return shared_service;
});

我知道我可以将观察者附加到其他地方,比如 Controller 中,但对我来说,我觉得我应该把它放在这里。可以放在这里吗?

谢谢。

最佳答案

您可以从 $rootScope$watch ,但我相信,因为它不在 Controller 中,所以您必须观察函数的返回值...类似这应该有效:

angular.module('shared_service', []).
  factory('Shared', function($rootScope){
    var shared_service = {
        something: 'something',
        something_else: 'something_else'
    };

    $rootScope.$watch(function() {
      return shared_service.something;
    }, function () {
             shared_service.something_else = shared_service.something_else + 1;
    });
    return shared_service;
  });

关于javascript - 工厂内的$watch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737678/

相关文章:

javascript - Document 和 document 和有什么不一样?

javascript - 检查集合中是否有任何脏的 Backbone 模型数据

javascript - React Material UI 从自动完成中打开模式失去焦点

angularjs - $HttpBackend (AngularJS) 出现意外请求错误

javascript - Blob URL 不适用于 Android 浏览器

javascript - 路径或参数中不能有句点

javascript - element.parentNode.removeChild(element) 之前是否需要 element.removeEventListener()?

javascript - 基本的 for 循环遍历字符串 JavaScript

javascript - AngularJS - 过滤器返回引用?

javascript - 使用来自 json 的 ng-flow.js 填充图像文件