如何使用angularJS中的$ resource从json中检索值

时间:2015-04-21 22:39:07

标签: 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"
        }
    ]
}

在我的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!

1 个答案:

答案 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);
});