Javascript Angularjs-交叉控制器工厂更新

Javascript Angularjs-交叉控制器工厂更新,javascript,angularjs,Javascript,Angularjs,我有两个控制器共享同一个工厂。其中一个控制器正在更新工厂变量。其他人应该注意这种变化,稍后再显示 我就是这样尝试的: 但它不起作用。在控制器之间共享变量的最佳正确方法是什么?如何使我的代码工作?您的问题与AngularJS无关,而是与JavaScript中的基本值闭包行为有关。简言之,如果在基元类型上有一个闭包,那么它是一个复制的值,可以在本地函数中访问。您正在断开与原始变量的连接,无法从本地范围修改它 将原语值更改为对象引用,您的代码将开始按预期工作:您的问题与AngularJS无关,而是与

我有两个控制器共享同一个工厂。其中一个控制器正在更新工厂变量。其他人应该注意这种变化,稍后再显示

我就是这样尝试的:


但它不起作用。在控制器之间共享变量的最佳正确方法是什么?如何使我的代码工作?

您的问题与AngularJS无关,而是与JavaScript中的基本值闭包行为有关。简言之,如果在基元类型上有一个闭包,那么它是一个复制的值,可以在本地函数中访问。您正在断开与原始变量的连接,无法从本地范围修改它


将原语值更改为对象引用,您的代码将开始按预期工作:

您的问题与AngularJS无关,而是与JavaScript中原语值的闭包行为有关。简言之,如果在基元类型上有一个闭包,那么它是一个复制的值,可以在本地函数中访问。您正在断开与原始变量的连接,无法从本地范围修改它


将原语值更改为对象引用,代码将按预期开始工作:

那么,该示例中的工厂是单例工厂吗?我以为只有服务是单例的。@finishingmove工厂和服务是单例的。@finishingmove.factory、.service和.Provider是描述如何创建对象实例的不同方式,在AngularJS术语中通常称为服务。所有这些对象都是单态对象。不幸的是,服务字有点过载,所以很容易混淆。那么,该示例中的工厂是单例的吗?我以为只有服务是单例的。@finishingmove工厂和服务是单例的。@finishingmove.factory、.service和.Provider是描述如何创建对象实例的不同方式,在AngularJS术语中通常称为服务。所有这些对象都是单态对象。不幸的是,服务词有点过载,所以很容易混淆。