使用 Angular 观察工厂变量

Posted

技术标签:

【中文标题】使用 Angular 观察工厂变量【英文标题】:watch factory variable with Angular 【发布时间】:2015-08-16 06:08:44 【问题描述】:

我的单页应用程序有 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);

我在控制台中得到“未定义的未定义”和“进程”。这个工厂的 $watch 实现有什么问题吗?

【问题讨论】:

【参考方案1】:

您的语法错误。它应该return 服务变量MenuFactory.Control 并且最后也不需要true,因为你没有对象来检查对象是否相等。

代码

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

【讨论】:

@Pierolain 很高兴为您提供帮助..谢谢 :)

以上是关于使用 Angular 观察工厂变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在Angular 2中每次路由更改时观察路由更改和布尔变量的更改值?

AngularJS $watch 的 Angular 等价物是啥?

在 Angular 中使用 Observer 作为 Observable

在 Angular 工厂中使用第三方库

angular 2+ 使用 createComponent 工厂时如何使用和监听输出发射器

Angular 4:未找到组件工厂,您是不是将其添加到 @NgModule.entryComponents?