Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular JS-与函数返回值相反的服务返回函数代码_Angularjs_Service - Fatal编程技术网

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
的文档,并阅读更多关于承诺及其工作方式的信息。您的代码是非功能性的。本文解释了原因: