如果你只有數據,那麼你可以使用一個值。將值注入到每個控制器中並將其存儲在您的範圍中,然後在模板中引用該值的屬性。如果你使用服務,你可以做幾乎完全相同的事情。我的例子顯示了每個解決方案。
見下面的例子:如果你重新分配MyService.myData到一個新的對象 http://plnkr.co/edit/qTbSjnf6Q2FVDurGZhKd
<div ng-controller="MainCtrl">
<input ng-model="mainVal.value"></input>
<input ng-model="mainSvcVal.value"></input>
</div>
<div ng-controller="OtherCtrl">
<input ng-model="otherVal.value"></input>
<input ng-model="otherSvcVal.value"></input>
</div>
var app = angular.module('plunker', []);
app.value('MyValue', {value: "Hello There"});
app.service('MyService', function() {
this.myData = {
value: "Goodbye"
}
});
app.controller('MainCtrl', function($scope, MyValue, MyService) {
$scope.mainVal = MyValue;
$scope.mainSvcVal = MyService.myData;
});
app.controller('OtherCtrl', function($scope, MyValue, MyService) {
$scope.otherVal = MyValue;
$scope.otherSvcVal = MyService.myData;
});
有一點要注意的是,這將打破關係。
你可以使用Angular'value'並將其注入到兩者中。我也剛剛爲範圍屬性分配了一個服務,並直接在我的模板中引用了該服務的一個屬性。 (例如{{$ scope.myService.someProperty}}) –
@CraigSquire,我不確定將服務分配到$ scope是否好,因爲它將在AngularJS $ digest循環中完全檢查。我不需要那個。但值...這是好的,但該死的...爲什麼不是rootScope?所以我們應該爲每個服務創建app.value(例如類似的情況)? – dt0xff
當然,也許只是看一個引用對象的服務的屬性。 $ scope.myData = $ scope.myService.myData並在模板中引用$ scope.myData.someProperty。不確定每個服務的app.value意味着什麼。在$ rootScope上存儲數據也是可以接受的,是的。我通常不會這樣做,因爲當你不知道還有什麼東西要放置時,它可能會成爲傾倒場。 –