javascript - AngularJS 中的工厂 "is not defined"

标签 javascript angularjs

我是 Angular 世界的初学者,我不明白为什么我仍然收到“未定义”错误。这是我的代码:

angular.module('dopasujApp').factory('getProducts', ['$http', function ($http) {
var dataFactory = {};
dataFactory.sort='ASC';
dataFactory.orderBy='PRODUCT_NAME';
dataFactory.search='a';
dataFactory.filters={};
dataFactory.filters.ATTRIBS=[46,25];
dataFactory.filters.SIZE=[165,40];

getProducts.listProducts = function() {
    var request = $http({
        method: "POST", 
        url: "http://******/backend/internalAPI.php?action=getListing&fit=1&limit=10&vendor=20",
        headers: {
            'Content-Type': 'application/json'
        },
        data: {
            data: dataFactory
        }
    });

    var products = angular.fromJson(request);

    return products;
}

return false;

}]);

这是我的 Controller (现在仅用于测试目的)。

angular.module('dopasujApp')
.controller('MainCtrl', ['getProducts', '$scope','$rootScope', 
    function (getProducts, $scope,$rootScope) {
        console.log(getProducts.listProducts())
    }
]);

最佳答案

  1. 工厂中的 getProducts 变量未定义。您之前使用的名称只是 Angular 的信息性名称

  2. 在您的工厂中,您返回“false”作为实际结果。因此, Angular 将您的“错误”视为结果。

它应该看起来像这样:

angular.module('dopasujApp').factory('getProducts', ['$http', function ($http) {
    var dataFactory = {}, getProducts = {};
    dataFactory.sort='ASC';
    dataFactory.orderBy='PRODUCT_NAME';
    dataFactory.search='a';
    dataFactory.filters={};
    dataFactory.filters.ATTRIBS=[46,25];
    dataFactory.filters.SIZE=[165,40];

    getProducts.listProducts = function() {
        return $http({
            method: "POST", 
            url: "http://******/backend/internalAPI.php?action=getListing&fit=1&limit=10&vendor=20",
            headers: {
                'Content-Type': 'application/json'
            },
            data: {
                data: dataFactory
            }
        });
    }

    return getProducts;

}]);

Controller

angular.module('dopasujApp').controller('MainCtrl', ['getProducts', '$scope','$rootScope', 
    function (getProducts, $scope,$rootScope) {
        getProducts.listProducts().then(function(res) {
            console.log(res.data);
        });
    }
]);

编辑:

另请注意,$http 返回 promise ,但不是实际的查询结果,相应更新了我的示例

关于javascript - AngularJS 中的工厂 "is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411104/

相关文章:

javascript - 以 data-* 开头时无法识别 AngularJS 指令

javascript - 为什么运行此脚本后页面会重新加载

javascript - 使用按钮传递变量(Ajax Modal)

javascript - 在 Jquery/Javascript 中传递函数

php - 强制 javascript 生成的内容显示自身

javascript - 从连接到 SQL 的 PHP 使用 AngularJS 读取 JSON 数据

javascript - angularjs $http.get() 调用上的 catch() 不会抑制错误

javascript - 如何在 AngularJS 中创建工厂?

jquery - 使用 Angular Slick 轮播组件实现分层幻灯片

javascript - 如何使用 AngularJS 替换 .asp include?