我认为我的代码中存在语法错误,但我不完全确定。基本上当我在服务上调用一个函数时,它返回代码而不是函数的返回值。
这是服务......
(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;
});
}
答案 0 :(得分:4)
是的,你确实有语法错误,就在这里:
console.log("products: " + products.getProducts);
应该是:
console.log("products: " + products.getProducts());
HOWEVER 不会记录产品列表,它会记录一个承诺对象,这是$http.get().then()
返回的内容。您需要重新阅读$http
的文档,并阅读有关承诺及其工作原理的更多信息。您的代码按原样无效。本文解释了原因:http://blog.ninja-squad.com/2015/05/28/angularjs-promises/