如何使用$ resoure从调用中检索值并在JS中使用它,不仅仅是在我的数据绑定视图中?
我有这个JSON:
{
"id": 18,
"name": "adsfadsf",
"type_of_dish": "Tacos",
"cost": "5.95",
"notes": "bla bla bla",
"totalrecipes": 1,
"dish_recipes_attributes": [
{
"recipe_id": 28,
"no_recipe": 1,
"name": "tacos al pastor piña",
"cost_portion": "5.95"
}
]
}
在我的JS中:
$scope.dish = Dish.get({id: $routeParams.id});
我需要获得价值" totalrecipes",我已经尝试了这个没有成功:
var totalrecipes = $scope.dish.totalrecipes;
console.log(totalrecipes); //Undefined
console.log($scope.dish); // [object Object]
但在我看来一切正常:
{{dish.totalrecipes}} // 1, It's OK!
答案 0 :(得分:5)
请记住,资源的操作功能是异步,并且只返回 promise 对象。您可以在$resource和$q文档中阅读相关内容。该视图实际上是为了在“履行”承诺后自行更新,这就是为什么值会在您的视图中显示。
考虑以下示例:
$scope.dish = Dish.get({id: 123})
alert($scope.dish.totalrecipes);
在这种情况下,$scope.dish
将被分配一个promise对象,直到加载实际值(这可能在以后的任何时间点发生,或者根本不发生)。
相反,您可以使用回调方法,直接作为get
函数的参数,或使用 promise API:
$scope.dish = Dish.get({id: 123}, function(dish) {
alert(dish.totalrecipes);
});
可替换地:
$scope.dish = Dish.get({id: 123})
$scope.dish.$promise.then(function(dish) {
alert(dish.totalrecipes);
});