【问题标题】:Getting TypeError: Cannot read property 'query' of undefined获取 TypeError:无法读取未定义的属性“查询”
【发布时间】:2016-10-24 14:44:57
【问题描述】:

我正在熟悉 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 未定义?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您的控制器期望注入以下依赖项:

    $scope, productResource
    

    实际上你只注入 "productResource" 而不是 "$scope", "productResource"

    你的控制器应该这样初始化:

    angular.module("productManagement").controller("ProductListController", ["$scope", "productResource", ProductListController]);
    
    function ProductListController($scope, productResource) {
        // ...
    }
    

    传入的依赖项的名称需要与控制器函数声明中的参数同步 - 在您注入 "productResource" 的那一刻,它会进入 $scope 参数。

    【讨论】:

      【解决方案2】:

      我不久前遇到了这个问题,我花了几个小时才弄清楚。

      在某些情况下,您需要确保注入 "productResource""$scope" 并遵循特定顺序。让我演示一下:

      angular.module("productManagement").controller("ProductListController", ["$scope", "productResource", ProductListController]);  
      
          function ProductListController($scope, productResource) {
              // ...
          }
      

      上面的代码总是可以工作的,但是如果你如下图所示切换位置,在某些情况下(正如我上面提到的),它不会工作。

      angular.module("productManagement").controller("ProductListController", ["productResource","$scope", ProductListController]);  
      
          function ProductListController($scope, productResource) {
              // ...
          }
      

      直到今天,我从未遇到过确保以正确顺序注入依赖项的问题。如果在这一切之后您的代码仍然无法正常工作,那么问题可能出在其他地方。
      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-12-13
        • 1970-01-01
        • 2021-09-04
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2021-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多