Angularjs 如何从两个控制器中的一个服务使用完全相同的阵列?
我有以下代码: 控制器:Angularjs 如何从两个控制器中的一个服务使用完全相同的阵列?,angularjs,service,Angularjs,Service,我有以下代码: 控制器: function deleteRootCategory(){ $scope.rootCategories[0] = ''; } function getCategories(){ categoryService.getCategories().then(function(data){ $scope.rootCategories = data[0]; $scope.subCategories = data[1]; $scope.titles
function deleteRootCategory(){
$scope.rootCategories[0] = '';
}
function getCategories(){
categoryService.getCategories().then(function(data){
$scope.rootCategories = data[0];
$scope.subCategories = data[1];
$scope.titles = data[2];
});
}
getCategories();
服务:
var getCategories = function(){
var deferred = $q.defer();
$http({
method:"GET",
url:"wikiArticles/categories"
}).then(function(result){
deferred.resolve(result);
});
}
return deferred.promise;
}
html:
{{root}}
{{sub}}
{{title}}
html2:
<div ng-controller="controller">
<div ng-include src="html"></div>
<button ng-click="deleteRootCategory()">Del</button>
</div>
德尔
当我单击deleteRootCategory按钮时,数组$scope.rootCategories会更新,但视图永远不会更改
我错过了什么
谢谢当服务中的值更改时,您可能需要设置广播事件。像这样的
.service("Data", function($http, $rootScope) {
var this_ = this,
data;
$http.get('wikiArticles/categories', function(response) {
this_.set(response.data);
}
this.get = function() {
return data;
}
this.set = function(data_) {
data = data_;
$rootScope.$broadcast('event:data-change');
}
});
让两个控制器等待事件,并使用集合对阵列进行任何更改
$rootScope.$on('event:data-change', function() {
$scope.data = Data.get();
}
$scope.update = function(d) {
Data.set(d);
}
没有语言可以描述我现在的感受!非常感谢!:)
$rootScope.$on('event:data-change', function() {
$scope.data = Data.get();
}
$scope.update = function(d) {
Data.set(d);
}