Javascript AngularJS针对多个指令的单一服务/工厂真理来源
目标 我试图实现的是使用一个服务*为我的指令保留唯一的真相来源。我意识到我可以使用API调用,但问题是我正在使用的应用程序速度太慢(如果可以的话,我会改变它),它不需要额外的调用。另外,除非我在每次更改时都保存了数据,否则在整个应用程序中对数据进行更改时不会保持更改同步。我想从控制器和其他服务中执行类似操作:Javascript AngularJS针对多个指令的单一服务/工厂真理来源,javascript,angularjs,Javascript,Angularjs,目标 我试图实现的是使用一个服务*为我的指令保留唯一的真相来源。我意识到我可以使用API调用,但问题是我正在使用的应用程序速度太慢(如果可以的话,我会改变它),它不需要额外的调用。另外,除非我在每次更改时都保存了数据,否则在整个应用程序中对数据进行更改时不会保持更改同步。我想从控制器和其他服务中执行类似操作: function SomeController(['DataService', function() { var dataToCollectWithoutAPICall = Dat
function SomeController(['DataService', function() {
var dataToCollectWithoutAPICall = DataService.currentData;
}]);
function SomeService(['DataService', function() {
var dataToCollectWithoutAPICall = DataService.currentData;
}]);
这样,当服务或控制器更新currentData
时,其他服务或控制器也会更新
编辑:
应该说“更新指令实例中的控制器/服务”。因此,对
的更新不应更新
的数据。但是,对
数据的任何更改应仅更新
内所有控制器/服务的数据
问题
如果您只有一个元素使用该指令,那么这非常有效,但是如果您有第二个元素,那么一个指令可以更新服务,而另一个指令的数据也会更新
从第一个指令开始:
DataService.currentData='First Data'代码>
然后,第二条指令更新了这一点:
DataService.currentData='seconddata'代码>
突然之间,没有APICALL的集合的第一个指令datatocollect就是“第二个数据”
我避免将数据放在$scope上,因为服务不能使用$scope,因此服务不再是唯一的真相来源
问题
是否可以隔离每个指令的数据
控制器/服务知道Angular中的每个指令是否有唯一标识符
有人知道怎么解决这个问题吗
我愿意使用的一个想法是为每个指令创建一个唯一的标识符,例如DataService.currentData['UniqueIdentifier']
我也考虑过使用本地存储,但是我必须支持的浏览器并不都使用本地存储,我会遇到同样的问题,一个指令会覆盖另一个指令
我愿意彻底地重新思考我要做的事情。我只想要一个所有控制器/服务都可以从中提取数据的SSoT
*我用services
来表示服务或工厂。您的目标是“当一个服务或控制器更新它为其他服务或控制器更新的当前数据时”。但是,在下一段中,您将其描述为一个问题。我很困惑。@zeroflagL我编辑了这个问题。你是对的,我不太清楚我在进球中的意思。当你认为其他人可以读懂你的想法时,就会发生这种情况:)你的目标是“当一个服务或控制器更新它也为其他人更新的当前数据时”。但是,在下一段中,您将其描述为一个问题。我很困惑。@zeroflagL我编辑了这个问题。你是对的,我不太清楚我在进球中的意思。当你认为别人能读懂你的心思时,就会发生这种情况:)