2016-10-13 13 views
2

私のコードには構文エラーがあるとは思いますが、完全にはわかりません。基本的に私はサービス上で関数を呼び出すと、関数の戻り値ではなくコードを返します。Angular JS - 関数戻りコードとは対照的に、関数戻りコード

これはこれは、製品のサービスを起動するよりも、コントローラである...

(function(){ 
'use strict'; 

var products = function($http){ 

    var getProducts = function() { 
     return $http.get(getDataUrl) 
      .then(function (response) { 
       return response.data; 
      }); 
    }; 

    //Make functions public 
    return { 
     getProducts: getProducts 
    }; 
}; 

var module = angular.module("shop"); 
module.factory("products", products); 
module.constant("getDataUrl", "xxx") 

}()); 

サービスです...

(function() { 
'use strict'; 

angular 
    .module("shop") 
    .controller("ProductController", ProductController); 

function ProductController($scope, cart, $routeParams, products) { 

    // $scope.product = products.getProducts; 
    // console.log($scope.product); 

    var productId = getProductIdFromUrl(); 
    console.log("productId: " + productId); 

    console.log("products: " + products.getProducts); 

    function getProductIdFromUrl(){ 
     return $routeParams.productId; 
    } 

} 

})(); 

ではなく、私が期待していJSONデータを返します、 console.logは関数コードを表示するだけです。誰にでもアイデアはありますか?

にconsole.logは以下の...

products: function() { 
     return $http.get(getDataUrl) 
      .then(function (response) { 
       return response.data; 
      }); 
    } 

答えて

4

うんを印刷し、あなたは右ここで、構文エラーがあります:

console.log("products: " + products.getProducts); 

をする必要があること:

console.log("products: " + products.getProducts()); 

これは製品のリストをログに記録しないため、プロのログに記録されますこれは、$http.get().then()が返すものです。 $httpのドキュメントをもう一度読んで、約束とその仕組みについてさらに読む必要があります。あなたのコードはそのままでは機能しません。この記事では理由を説明します:http://blog.ninja-squad.com/2015/05/28/angularjs-promises/