我的单页应用程序有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; });
我想看看工厂的变化.控制,但我不能让它工作.
当我尝试这个:
$scope.$watch(function(){MenuFactory.Control},function(NewValue,OldValue){ console.log(NewValue + ' ' + OldValue); console.log(MenuFactory.Control); },true);
我在控制台中得到“undefined undefined”和“Process”.这个工厂的$watch实现有什么问题吗?
解决方法
你的语法错了.它应该返回服务变量MenuFactory.Control&最后也没有必要,因为你没有对象来检查对象的相等性.
码
$scope.$watch(function(){ return MenuFactory.Control; },function(newValue,oldValue){ console.log(newValue + ' ' + oldValue); console.log(MenuFactory.Control); });