使用Angular监视工厂变量

时间:2015-06-02 12:35:01

标签: javascript angularjs angularjs-scope angularjs-factory angularjs-watch

我的单页应用程序有2个控制器:第一个用于我的主菜单,第二个用于视图。他们与该工厂共享数据

myApp.factory('MenuFactory', function(){
var factory = {
    Monitor: "doneJob",
    Control: "",
    Report: "",
    Display: "",
    setMonitor: function(value){
        factory.Monitor = value;
    },
    setControl: function(value){
        factory.Control = value;
    },
    setReport: function(value){
        factory.Report = value;
    },
    setDisplay: function(value){
        factory.Display = value;
    }

};
return factory;
});

我想在factory.Control上观看更改,但我无法让它发挥作用。

当我尝试这个时:

$scope.$watch(function(){MenuFactory.Control}, function(NewValue, OldValue){
    console.log(NewValue + ' ' + OldValue);
    console.log(MenuFactory.Control);
}, true);

我得到" undefined undefined"和"流程"在控制台。这个工厂的$ watch实现有问题吗?

1 个答案:

答案 0 :(得分:16)

你的语法错误。它应return服务变量MenuFactory.Control&最后也不需要true,因为你没有对象来检查对象的相同性。

<强>代码

$scope.$watch(function(){
   return MenuFactory.Control;
}, function(newValue, oldValue){
    console.log(newValue + ' ' + oldValue);
    console.log(MenuFactory.Control);
});