angularjs - 获取类型错误 : Cannot read property 'query' of undefined

标签 angularjs

我正在熟悉 AngularJS 并调用 Web API 后端,但我得到了错误

angular.js:13424 TypeError: Cannot read property 'query' of undefined



我有一个 productListController
(function ()
{
"use strict";
angular.module("productManagement").controller("ProductListController", ["productResource", ProductListController]);
function ProductListController($scope, productResource) {

    productResource.query(function (data) {
        $scope.products = data
    });
}
})();

我创建了一个名为 productResource 的服务
(function () {
"use strict";

angular.module("common.services").factory("productResource", ["$resource", "appSettings", productResource])

function productResource($resource, appSettings) {
    return $resource(appSettings.serverPath + "/api/products/:id").query();
}
}());

appSettings 是一个指定路径的常量。

为什么是 query不明确的?

最佳答案

您的 Controller 期望注入(inject)以下依赖项:

$scope, productResource

实际上你只注入(inject)了"productResource"而不是 "$scope", "productResource"
你的 Controller 应该像这样初始化:
angular.module("productManagement").controller("ProductListController", ["$scope", "productResource", ProductListController]);

function ProductListController($scope, productResource) {
    // ...
}

传入的依赖项的名称需要与 Controller 函数声明中的参数同步 - 在您注入(inject)时 "productResource"它进入$scope范围。

关于angularjs - 获取类型错误 : Cannot read property 'query' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519451/

相关文章:

http - Laravel angularjs http post 从输入返回 null

node.js - AngularJS 应用程序在本地和 Heroku 上有不同的行为

javascript - angularjs ng-option 空白选项改为预选

angularjs - 是否可以构建一个独立的 Angular 插件以嵌入到其他 Angular 站点中?

angularjs - 是否可以在 Angular 字段上拥有多个自定义验证器?

javascript - HTML 表单更改焦点进入

angularjs - ng-bind-html 中的 Angular 指令未被评估

javascript - 如何将 json 数据从 C# Controller 传递到 Angular js?

css - Angular-ui-grid - 文本装饰不适用于行模板子项

angularjs - promise - 在 $q.all 之后我得到相同的结果