这是我的应用程序中一个控制器的代码,位于用户页面中。
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() {....}
}]);
在另一个页面的Permission页面上,我创建了一个具有相同逻辑的控制器
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。如何将控制器中的逻辑重用到另一个?
答案 0 :(得分:1)
这正是services的用途。
所以而不是:
$http.get('/Permission/GetPermissions').success(function (data) {
$scope.data= data;
});
你会打电话给:
permissionsService.get().then(function (data) {
$scope.data= data;
});
并且:
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;
});
}
等...
通常,所有服务器调用都应该在服务中,因此有很好的机会来改进代码和学习如何正确执行。