我正在遵循我在Stormpath找到的本教程 我试图了解AngularJS是如何工作的,但我没有让编辑功能(控制器)运行。我总是收到类型错误:
DELETE
在其callstack中,它引用 EditController 指向这行代码:
TypeError: SearchService.fetch is not a function
以下是 EditController 的完整代码:
SearchService.fetch($stateParams.id, function (response) {
但是我不知道这里有什么问题。我想将此代码与 SearchController 的代码进行比较 - 请参阅下文,
(function () {
'use strict';
angular
.module('myApp')
.controller('EditController', EditController);
EditController.$inject = ['SearchService', '$stateParams'];
function EditController(SearchService, $stateParams) {
var vm = this;
SearchService.fetch($stateParams.id, function (response) {
vm.person = response;
});
}
})();
以下是 SearchService 的代码:
(function () {
'use strict';
angular
.module('myApp')
.controller('SearchController', SearchController);
SearchController.$inject = ['SearchService'];
function SearchController(SearchService) {
var vm = this;
vm.search = function(){
SearchService.query(vm.term, function (response) {
var results = response.filter(function (item) {
return JSON.stringify(item).toLowerCase().includes(vm.term.toLowerCase());
});
vm.searchResults = results;
});
}
}
})();
任何建议都表示赞赏,我已经花了几天时间尝试各种各样的事情。
答案 0 :(得分:1)
像这样制作您的搜索服务..
服务工厂函数生成表示应用程序其余部分服务的单个对象或函数。服务返回的对象或函数被注入到指定服务依赖性的任何组件(控制器,服务,过滤器或指令)
https://docs.angularjs.org/guide/services
(function () {
'use strict';
angular.module('myApp')
.factory('SearchService', SearchService);
SearchService.$inject = ['$resource'];
function SearchService($resource, $http) {
var service = {};
service.url = $resource('/api/search/people.json');
var req = {
method: 'GET',
url: 'http://example.com',
headers: {
'Content-Type': undefined
},
data: { test: 'test' }
}
service.fetch = function (id, callback) {
// $http.get('yourapi.json').then() you can try like this also
return $http(req).then(function (response) {
var results = response.filter(function (item) {
return item.id === parseInt(id);
});
return callback(results[0]);
});
};
return service;
}
})();