的Json
[
{
"id":"0",
"name" : "BCAA & GLUTAMINE",
"brand" : "NRG FUEL",
"price": "20",
"description": "NRGFUEL 100% BCAA & Glutamine powder has been scientifically formulated to promote full muscle recovery, growth and repair whilst preventing muscle breakdown. Consisting of our instantized BCAA (2:1:1 RATIO) and absolute pure glutamine NRGFUEL’S BCAA and Glutamine powder will keep you in a positive state of growth and recovery. If you train hard, you need to recover hard.",
"img" : "images/products/dietforcewhey.jpg"
},
{
"id":"1",
"name" : "WHEY PLUS RIPPEDCORE",
"brand" : "SCISMX NUTRITION",
"price": "20",
"description": "NRGFUEL 100% BCAA & Glutamine powder has been scientifically formulated to promote full muscle recovery, growth and repair whilst preventing muscle breakdown. Consisting of our instantized BCAA (2:1:1 RATIO) and absolute pure glutamine NRGFUEL’S BCAA and Glutamine powder will keep you in a positive state of growth and recovery. If you train hard, you need to recover hard.",
"img" : "images/products/wheyplusrippedcore.jpg"
}
]
控制器
app.controller('productDetails', ['$scope', '$routeParams', 'productService', function ($scope, $routeParams, productService) {
$scope.products = productService.query();
$scope.product = $scope.products[$routeParams.id];
console.log($scope.product)
}]);
服务
app.factory('productService', ['$resource', function ($resource) {
return $resource('json/products.json');
}]);
当我的console.log $ scope.product我得到' undefined'但scope.products工作正常。
有人可以解释一下我做错了吗?。答案 0 :(得分:1)
啊,在使用$ resource时,这总是我最头疼的问题之一!
问题是$ scope.products = productService.query();是异步的。这意味着$ scope.product将被设置为尚不存在的东西。也就是说,代码直接跳过.query()直到该行。
您需要做的是将该语句放在异步函数的回调中,以便它在完成时运行。像这样:
$scope.products = productService.query(function(result){
$scope.product = result[$routeParams.id];
});
希望有所帮助! :)