Angularjs Angular JS-与函数返回值相反的服务返回函数代码
我想我的代码中有语法错误,但我不能完全确定。基本上,当我调用服务上的函数时,它会返回代码,而不是函数的返回值 这是服务Angularjs Angular JS-与函数返回值相反的服务返回函数代码,angularjs,service,Angularjs,Service,我想我的代码中有语法错误,但我不能完全确定。基本上,当我调用服务上的函数时,它会返回代码,而不是函数的返回值 这是服务 (function (){ 'use strict'; var products = function($http){ var getProducts = function () { return $http.get(getDataUrl) .then(function (response) {
(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;
}
}
})();
现在,console.log不再返回我期望的JSON数据,而是打印函数代码。有人有什么想法吗
console.log打印以下内容
products: function () {
return $http.get(getDataUrl)
.then(function (response) {
return response.data;
});
}
是的,您确实有语法错误,就在这里:
console.log("products: " + products.getProducts);
这应该是:
console.log("products: " + products.getProducts());
然而,它不会记录产品列表,而是记录承诺对象,这就是$http.get()。然后()
返回的内容。您需要重新阅读$http
的文档,并阅读更多关于承诺及其工作方式的信息。您的代码是非功能性的。本文解释了原因: