我有两个控制器/视图,一个名为member.js,用于显示成员项目列表:
.controller( 'MemberCtrl', function MemberCtrl( $scope,ProjectsService ) {
$scope.projects = [];
$scope.refresh = function() {
ProjectsService.query()
.then(function (data) {
$scope.projects = data;
});
};
$scope.refresh();
})
.factory('ProjectsService', ['$http', '$q', function($http, $q) {
return {
query: function() {
var deferred = $q.defer();
$http.get('/api/get-projects')
.success(function(data) {
deferred.resolve(data);
})
.error(function(data) {
deferred.reject(data);
});
return deferred.promise;
}
};
}])
下一个控制器位于add.js并处理创建新项目:
.controller( 'AddprojectCtrl', function AddprojectCtrl( $http,$scope,Session,$location ) {
$scope.addProject = function(project){
return $http
.post('/api/create-project', project)
.then(function (result) {
$location.path("/member");
});
};
})
我遇到的问题是,一旦我添加到新项目中,MemberCtrl上的$ scope.projects已过期,并且不会显示新添加的项目。我想我可以使用一个控制器进行两种操作,但是想知道这是最好的方法还是“角度”方式是什么?
答案 0 :(得分:0)
你的AddprojectCtrl不应该是一个控制器,而应该是一个工厂
.factory( 'AddprojectCtrl', function AddprojectCtrl( $http,$location ) {
return {
addProject:function(project) {
$http.post('/api/create-project', project)
//Ideally this can be done inside the controller itself
.then(function (result) {
$location.path("/member");
}
}
})
然后你需要在控制器内注入工厂。在控制器中,您可以调用工厂的addProject函数。这是有角度的方式:)