工厂"未定义"在AngularJS中

时间:2016-09-09 11:59:30

标签: javascript angularjs

我是Angular世界的初学者,我无法解决为什么我仍然没有定义"未定义"错误。这是我的代码:

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

这是我的控制器(仅用于测试目的)。

library(data.table)
data(mtcars)
mtcars<-as.data.table(mtcars)
mtcars <- mtcars[,.N, by=cyl]
mtcars

    cyl  N
1:   6  7
2:   4 11
3:   8 14

2 个答案:

答案 0 :(得分:1)

  1. 未定义工厂中的getProducts变量。您之前使用的名称只是角度

  2. 的信息名称
  3. 在您的工厂中,您将返回“false”作为实际结果。因此,角度会将您的“假”视为结果。

  4. 看起来应该是这样的:

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

    控制器

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

    编辑:

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

答案 1 :(得分:0)

试试这个

var yourapp = angular.module('dopasujApp', []);  //your defining your app first
yourapp.factory('getProducts', function ($http)
{
   return {
       //write your factory methods
   };
});    

你的控制器应该如下所示

yourapp.controller('MainCtrl', function PostController($scope, getProducts, $compile)
{
    //here your controller methods
});