我有一个带有controllers.js 和factories.js 的AngularJS 应用程序。
我喜欢用控制器中的值(我从工厂获得)做一些事情。我的问题是,当我访问这些值时它们是空的。
我怎样才能等待回复?或者在哪里可以添加回调?
Flashcards.controller('CardDeckDetailController', function($scope, $routeParams, CardDeckService, CardService) {
$scope.carddeck = CardDeckService.findCardDeckByID($routeParams.cardDeckID);
$scope.cards = CardService.findCardsByCardDeckID($routeParams.cardDeckID);
$scope.card = $scope.cards[0];
$scope.cardLength = $scope.cards.length;
});
Flashcards.factory('CardDeckService', function($resource) {
var cardDeckService = $resource('/FlashcardsServer/rest/carddecks/:cardDeckID', {}, {});
cardDeckService.findAllCardDecks = function() {
return cardDeckService.query();
};
cardDeckService.findCardDeckByID = function(id) {
return cardDeckService.get({ cardDeckID : id });
};
return cardDeckService;
});
我喜欢的是获得第一辆车($scope.cards[0])并将其保存在$scope.card下。但它总是空的(与 cardsLength 相同)。
另一方面,如果我使用 (cards.length) 从部分视图打印出尺寸,我会得到正确的值。
问候和感谢
马克
您可以通过访问 value.$then 来取回承诺(必须转到源代码才能找到):
Flashcards.controller('CardDeckDetailController', function($scope, $routeParams, CardDeckService, CardService) {
$scope.carddeck = CardDeckService.findCardDeckByID($routeParams.cardDeckID);
$scope.cards = CardService.findCardsByCardDeckID($routeParams.cardDeckID);
$scope.card = $scope.cards.$then(function(){ return $scope.cards[0]; });
$scope.cardLength = $scope.cards.$then(function(){ return $scope.cards.length; });
编辑:$然后返回http响应
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)