我认为我的代码中有语法错误,但是我不确定。基本上,当我在服务上调用函数时,它返回代码而不是函数的返回值。
这是服务...
(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")
}());
Run Code Online (Sandbox Code Playgroud)
这是控制器,而不是调用产品服务的控制器。
(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;
}
}
})();
Run Code Online (Sandbox Code Playgroud)
现在,console.log不再返回我期望的JSON数据,而只是打印功能代码。有任何想法吗?
console.log打印以下内容...
products: function () {
return $http.get(getDataUrl)
.then(function (response) {
return response.data;
});
}
Run Code Online (Sandbox Code Playgroud)
是的,您确实有语法错误,就在这里:
console.log("products: " + products.getProducts);
Run Code Online (Sandbox Code Playgroud)
应该是:
console.log("products: " + products.getProducts());
Run Code Online (Sandbox Code Playgroud)
但是,这不会记录产品列表,而是会记录一个promise对象,这$http.get().then()将返回结果。您需要重新阅读有关的文档$http,还需要阅读有关承诺及其工作方式的更多信息。您的代码无法按原样运行。本文介绍了原因:http://blog.ninja-squad.com/2015/05/28/angularjs-promises/
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |