Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么angularjs中没有函数错误?_Javascript_Angularjs - Fatal编程技术网

Javascript 为什么angularjs中没有函数错误?

Javascript 为什么angularjs中没有函数错误?,javascript,angularjs,Javascript,Angularjs,我正在学习我在上找到的教程。 我试图理解AngularJS是如何工作的,但我无法运行编辑函数(控制器)。我总是收到类型错误: TypeError: SearchService.fetch is not a function 在其调用堆栈中,它引用了指向以下代码行的EditController: SearchService.fetch($stateParams.id, function (response) { 以下是EditController的全部代码: (function () {

我正在学习我在上找到的教程。
我试图理解AngularJS是如何工作的,但我无法运行编辑函数(控制器)。我总是收到类型错误

TypeError: SearchService.fetch is not a function
在其调用堆栈中,它引用了指向以下代码行的EditController

SearchService.fetch($stateParams.id, function (response) {
以下是EditController的全部代码:

(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;
        });
    }


})();
(function () {
    'use strict';

    angular
        .module('myApp')
        .factory('SearchService', SearchService);

    SearchService.$inject = ['$resource'];

    function SearchService($resource) {
        return $resource('/api/search/people.json');
    }

    SearchService.fetch = function (id, callback) {
       Search.query(function (response) {
          var results = response.filter(function (item) {
             return item.id === parseInt(id);
          });
          return callback(results[0]);
       });
    };

})();
但是我不知道这里出了什么问题。我正在尝试将此代码与SearchController的代码进行比较-请参见下文

(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;
            });
    }
    }
})();
以下是搜索服务的代码:

(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;
        });
    }


})();
(function () {
    'use strict';

    angular
        .module('myApp')
        .factory('SearchService', SearchService);

    SearchService.$inject = ['$resource'];

    function SearchService($resource) {
        return $resource('/api/search/people.json');
    }

    SearchService.fetch = function (id, callback) {
       Search.query(function (response) {
          var results = response.filter(function (item) {
             return item.id === parseInt(id);
          });
          return callback(results[0]);
       });
    };

})();

感谢您的任何建议,我已经花了几天时间尝试了各种各样的东西。

让您的搜索服务像这样

服务工厂函数生成表示应用程序其余部分的服务的单个对象或函数。服务返回的对象或函数被注入到指定对服务依赖关系的任何组件(控制器、服务、筛选器或指令)中


看到这些代码,我们甚至不知道
SearchService
是否是一项服务。(你在哪里定义了fetch?)因为你的错误指出SearchService.fetch不是一个函数……它在任何地方都没有定义,但你正在尝试使用它……我怀疑你是否需要使用SearchService.search而不是SearchService.fetch。你是否将search.service.js链接到了你的html文件。它必须是app.js文件后的链接。Hi@ivo,请检查您是否为其定义了获取函数。感谢您的贡献和建议。我已经像你写的那样试过了,但是现在我得到了错误:TypeError:SearchService.query不是一个函数…Search.query?搜索是服务吗?你注射了吗?我没有在SearchController中做任何更改;我刚刚用你在答案中写的代码替换了原来的代码。我正在服务中询问。搜索也是服务,对吗?搜索服务代码在哪里?恐怕我在这里迷路了。在您回答之后,我做的唯一一件事就是用您提供的代码替换SearchService中的代码。SearchService的原始代码在我的问题中。