我正在尝试用2个控制器和1个服务来编写一些非常原始的角度代码。
因此,当我从控制器1调用共享服务并更新数据时,我想在我的控制器2 $scope
中使用它,以便控制器2 $scope
值可以反映在我的DOM上。
App.controller('oneCtrl', function($scope, $uibModal, $log, sharedProperties) {
// Call a new DOM element to so that ModalInstanceCtrl will be called
// Once controller 2 finishes, I want to update a $scope variable here
// $scope.projectList = getProjectList();
});
App.controller('ModalInstanceCtrl', function ($scope, $uibModalInstance, sharedProperties) {
// This is a new modal which uses sharedProperties
// Update setProjectList() in service
});
App.service('sharedProperties', function() {
var projectList = new Array();
return {
getProjectList: function() {
return projectList;
},
setProjectList: function(value) {
projectList.push(value);
},
}
});
一旦控制器2调用setProjectList()。我想使用getProjectList()
自动更新控制器1中的$ scope值请让我知道我该怎么做?如果需要进一步的详细信息,也请告诉我。
答案 0 :(得分:0)
角度服务是一个单身,所以如果您更改服务数据,只要您调用该服务,它就会被反映出来。
var app = angular.module('plunker', []);
app.controller('FirstCtrl', function($scope, userData) {
$scope.favoriteBook = userData.favoriteBook;
$scope.getFavoriteBook = function(){
$scope.favoriteBook = userData.favoriteBook;
}
});
app.controller('SecondCtrl', function($scope, userData) {
$scope.changeBook = function(){
userData.favoriteBook = 'The Hobbyt';
}
});
app.factory('userData', function(){
var favoriteBook = 'Harry Potter';
return{
favoriteBook : favoriteBook
}
})
这里有一个公开对象的服务,你可以在第二个控制器中更改该对象的值,并在第一个控制器中看到它。调用changeBook(),然后调用getFavoriteBook()
这是吸虫: the plunker