Isr*_*rba 1 javascript angularjs
我如何使用$ 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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在我的JS中:
$scope.dish = Dish.get({id: $routeParams.id});
Run Code Online (Sandbox Code Playgroud)
我需要获得值"totalrecipes",我已经尝试过这个没有成功:
var totalrecipes = $scope.dish.totalrecipes;
console.log(totalrecipes); //Undefined
console.log($scope.dish); // [object Object]
Run Code Online (Sandbox Code Playgroud)
但在我看来,一切都还可以:
{{dish.totalrecipes}} // 1, It's OK!
Run Code Online (Sandbox Code Playgroud)
请记住,资源的操作函数是异步的,只返回一个promise对象.您可以在$ resource和$ q文档中阅读.实际上,视图设计为在"履行"承诺后更新自身,这就是视图中显示值的原因.
请考虑以下示例:
$scope.dish = Dish.get({id: 123})
alert($scope.dish.totalrecipes);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,$scope.dish将分配一个promise对象,直到加载实际值(这可能在以后的任何时间点发生,或者根本不发生).
相反,您可以使用回调方法,直接作为函数的参数get,或使用promise API:
$scope.dish = Dish.get({id: 123}, function(dish) {
alert(dish.totalrecipes);
});
Run Code Online (Sandbox Code Playgroud)
或者:
$scope.dish = Dish.get({id: 123})
$scope.dish.$promise.then(function(dish) {
alert(dish.totalrecipes);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |