我目前正在设计一个商店管理系统,只是简单地接收和取出商店项目,此时我在我的AngularJS应用程序中有一个服务,它加载了所有可用的项目,看起来像这样:
storeApp.service("partsService", function ($http, $q) {
var deferred = $q.defer();
$http.get('loadStoreItems.php').then( function (data) {
deferred.resolve(data);
});
this.getParts = function () {
return deferred.promise;
};
});
现在我需要实现一个函数,该函数给出了由用户名输入的特定部件号,返回具有该部件号的特定项,以便我可以将其存储在用户已经采用的另一个部件阵列中。
我知道逻辑很容易,我可以很容易地在控制器中实现它,但我的(有限的)理解是应该避免控制器中的逻辑,所以我认为这应该作为服务实现。
我正在努力了解我将如何做到这一点,我一直在做一些研究,但仍然感到迷茫。我应该从哪里开始?
答案 0 :(得分:0)
Angular服务是:
Lazily实例化 - Angular仅在应用程序组件依赖它时实例化服务。 单身人士 - 依赖于服务的每个组件都会获得对服务工厂生成的单个实例的引用。
它可能对你有帮助!!!
var app = angular.module("myApp", []);
app.service('getDemoService', function($http) {
this.getDemoResult = function() {
return $http({
method: 'GET',
url: baseURL + 'Api/AccountPref/Get/' + uid
});
};
});
app.controller("MyDemoController", function($scope, getDemoService) {
$scope.resultData = [];
getDemoService.getDemoResult().then(function(data) {
var items = data.items;
//TODO: here your logic
});
});
答案 1 :(得分:0)
您可以使用partsService的另一种方法。例如:
this.getPartsByNumber = function(partNumber){
return $http.get('loadStoreItems.php?partNumber=' + partNumber)
}
在控制器中你可以使用
partsService.getPartsByNumber(123).then(function(response){
$scope.parts = response.data
})