javascript - 在angularJS中使用工厂方法时未定义不是函数错误

标签 javascript angularjs angularjs-service angularjs-routing

我在寻找代码中 TypeError: undefined is not a function 的解决方案时遇到问题。 我有以下 app.js:

var app =  angular.module('test', ['ngRoute', 'test.services', 'test.directives', 'test.controllers']);
app.config(function ($routeProvider, $httpProvider, $locationProvider) {

  $locationProvider.html5Mode(true);

  $routeProvider.
    when('/q/:q', {
      templateUrl: '/templates/productlist.html',
      controller: 'ProductCtrl'
    }).
    otherwise({
      redirectTo: '/q'
    });

});

然后我有一个 Controller

var controllers = angular.module('test.controllers', []);
controllers.controller('ProductCtrl', ['$scope', '$routeParams', 'ProductFactory',
  function ($scope, ProductFactory, $routeParams) {

    $scope.query = $routeParams.q;
    $scope.products = ProductFactory.query({query: $scope.query});
  }]);

还有一个工厂

var services = angular.module('test.services', ['ngResource']);
var baseUrl = 'http://localhost\\:8080';
services.factory('ProductFactory', function ($resource) {
    return $resource(baseUrl + '/test/smart/:query', {}, {
        query: { method: 'GET', isArray: true }
    })
});

此代码导致在我的 Controller 中 $scope.products = ProductFactory.query({query: $scope.query}); 行加载上述类型错误。 此外,在调试我的代码时,我发现 $routeParams.q 为空或未定义。 我想要的是在我的 Controller 中,$scope.products 变量变成一个包含查询结果的数组。

我做错了什么?

最佳答案

请尝试使用正确的函数参数,

controllers.controller('ProductCtrl', ['$scope', '$routeParams', 'ProductFactory',
  function ($scope /*ProductFactory*/, $routeParams, ProductFactory) {

    $scope.query = $routeParams.q;
    $scope.products = ProductFactory.query({query: $scope.query});
  }]);

关于javascript - 在angularJS中使用工厂方法时未定义不是函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124768/

相关文章:

javascript - Angular : How can we broadcast promise to different controllers?

javascript - Plotly - 如何删除范围 slider

javascript - 在 Quill.js 中听按键输入

unit-testing - 如何使用 Mocha 在 Angular.js 中测试使用 angular.module().controller() 创建的 Controller

javascript - Controller $scope 属性不更新(套接字连接)

angularjs - 在服务中使用 $routeParams

javascript - react Material 选择选项未填充

javascript onbeforeunload 禁用链接

带有 angularJS 应用程序的 ASP.NET MVC 区域

javascript - 使用单页应用程序(Angular)在上下文结帐中使用 PayPal