gpt4 book ai didi

angularjs - Angular JS - 服务返回函数代码而不是函数返回值

转载 作者:行者123 更新时间:2023-12-02 11:28:50 26 4
gpt4 key购买 nike

我认为我的代码中有语法错误,但我不完全确定。基本上,当我在服务上调用函数时,它返回代码而不是函数的返回值。

这就是服务...

(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")

}());

这是调用产品服务的 Controller ...

 (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());

但是这不会记录产品列表,它会记录一个 Promise 对象,这就是 $http.get().then()返回。您需要重新阅读 $http 的文档,并阅读有关 Promise 及其工作原理的更多信息。您的代码按原样无法运行。本文解释了原因:http://blog.ninja-squad.com/2015/05/28/angularjs-promises/

关于angularjs - Angular JS - 服务返回函数代码而不是函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com