重复使用AngularJS控制器逻辑
问题描述:
这是我的应用程序在用户页面中的一个控制器的代码。重复使用AngularJS控制器逻辑
app.controller('UserCtrl', ['$scope', '$http', function ($scope, $http) {
$http.get('/Users/GetUsers').success(function (data) {
$scope.data = data;
});
this.search = function() {
$http.post('/Users/SearchUser', $scope.search).success(function (data) {
$scope.data = data;
});
}
this.delete = function() {....}
}]);
在另一页,权限页面,我创建具有相同的逻辑
app.controller('PerCtrl', ['$scope', '$http', function ($scope, $http) {
$http.get('/Permission/GetPermissions').success(function (data) {
$scope.data= data;
});
this.search = function() {
$http.post('/Permission/SearchPermission', $scope.search).success(function (data) {
$scope.data = data;
});
}
this.delete = function() {....}
}]);
控制器正如你看到的,唯一不同的是URL。我怎样才能将控制器的逻辑重用到另一个?
答
这正是services的用途。
所以不是:
$http.get('/Permission/GetPermissions').success(function (data) {
$scope.data= data;
});
你会打电话来是这样的:
permissionsService.get().then(function (data) {
$scope.data= data;
});
和:
012:this.search = function() {
$http.post('/Permission/SearchPermission', $scope.search).success(function (data) {
$scope.data = data;
});
}
喜欢的东西替换
this.search = function() {
searchService.search().then(function (data) {
$scope.data = data;
});
}
等等
一般情况下,所有的服务器调用应该是服务,无论如何,所以有提高你的代码的一个很好的机会和学习如何做是正确的。
我知道这个服务,但是如果我使用服务,我仍然必须在每个控制器中声明“搜索,删除”。 我想要的是创建一个父控制器,其他控制器从它继承,我只需要配置获取和搜索,删除...或类似的东西的URL。 – 2014-12-02 03:21:54
那么,创建一个服务,为您做所有这些......这对于服务而不是控制器来说确实是一项工作。 – Shomz 2014-12-02 03:43:35