javascript
  • angularjs
  • 2016-09-09 21 views 0 likes 
    0

    私はAngularワールドの初心者ですが、なぜ私はまだ "定義されていません"というエラーが出ているのか分かりません。私のコードは以下の通りです:AngularJSで工場が定義されていません

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

    ここに私のコントローラがあります。工場内

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

    答えて

    1
    1. getProducts変数が定義されていません。あなたが以前に使用した名前は角のためのちょうど有益な名前です

    2. あなたの工場では、実際の結果として「偽」を返しています。だから角度は結果としてあなたの "偽"を扱います。

    それはそのようになります。

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

    EDIT:

    また$ HTTPは約束ではなく、実際のクエリの結果を返すことに注意して、更新私の例に応じて

    +0

    おかげで、あなたは私の問題を解決を下回るようにする必要があり、この

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

    のようにしてみてください。 – jazzgot

    0

    は、あなたのコントローラが

    yourapp.controller('MainCtrl', function PostController($scope, getProducts, $compile) 
    { 
        //here your controller methods 
    }); 
    
    関連する問題