Angularjs 跨所有控制器的服务单例
如果我有以下资料:Angularjs 跨所有控制器的服务单例,angularjs,Angularjs,如果我有以下资料: <div ng-controller="mainCtrl"> {{vm.name_from_service}} </div> .... <div ng-controller="mainCtrl"> {{vm.name_from_service}} </div> 片段#2: ng视图和下面的直接div都使用相同的服务从\u服务中检索name\u,但是name\u from\u服务只在一个地方更新 <di
<div ng-controller="mainCtrl">
{{vm.name_from_service}}
</div>
....
<div ng-controller="mainCtrl">
{{vm.name_from_service}}
</div>
片段#2: ng视图和下面的直接div都使用相同的服务从\u服务中检索name\u,但是name\u from\u服务只在一个地方更新
<div ng-controller="mainCtrl">
section 1
{{vm.name_from_service}}
</div>
<div id="ngviewcontainer" ng-view=""></div>
第一节
{{vm.name_from_service}}
此外,我没有使用任何异步ajax调用从_服务检索名称_,因此angular应该知道这些更改
我已经尝试使用$timeout和$apply()。没有骰子
我重构了不相关的逻辑并将其分离到一个单独的控制器中,并修复了这个问题。仍然有点困惑,为什么这两个值中只有一个在更新,尽管它们都应该来自同一个服务。是的
singleton模式是一种限制实例化的设计模式
将一个类转换为一个对象
也可以看看几乎相同的是的
singleton模式是一种限制实例化的设计模式
将一个类转换为一个对象
还可以查看几乎相同的是的,它将是相同的,除非出现一些摘要周期同步问题。 在某些情况下,您可以设置如下变量:
$scope.vm.name_from_service = someservice.getName();
但是如果您使用承诺和$http调用,那么有时您必须使用$watch手动查看单例中的更改。在这种情况下,两个控制器可以具有不同的值 是的,它将是相同的,除非出现一些摘要周期同步问题。 在某些情况下,您可以设置如下变量:
$scope.vm.name_from_service = someservice.getName();
但是如果您使用承诺和$http调用,那么有时您必须使用$watch手动查看单例中的更改。在这种情况下,两个控制器可以具有不同的值 您使用的是一个控制器-mainCtrl。您的控制器可以使用多个服务。但是,不能在控制器中使用相同名称下的不同服务。是的,您使用的是相同的服务。您使用的是一个控制器-mainCtrl。您的控制器可以使用多个服务。但是,不能在控制器中使用相同名称下的不同服务。因此,是的,您正在使用相同的服务。在一个位置更新是什么意思?@PankajParkar更新ng view呈现的标记,但不更新第1节中标记上方的div。在一个位置更新是什么意思?@PankajParkar更新ng view呈现的标记,但不更新第1节中标记上方的div。