嗨,我最近开始玩角度&节点,我立即遇到了问题。
我有一个简单的Controller,用于获取单个对象。一切正常,但我希望能够在控制器内初始化范围变量。我不知道怎么做,我总是以“变量未定义”或控制器提供的空数据结束。
function FightCtrl($scope, $http, $location, $routeParams) {
var addNewCard = function(myDeck, data){
if (myDeck === undefined){
myDeck = []; //doing it this way, i no longer have exception with
//"undefined" myDeck variable, but no data is shown in webpage
}
myDeck.push({
myCard: data.card
});
return myDeck;
};
$scope.generateMyCard = function() {
$http.get('/api/fight/').
success(function(data) {
//simple, but works only for one fetched item (card)
//namely: i cannot use ng-repeat here :(
$scope.myDeck = {
myCard: data.card //"data.card" fetched by node, works like a charm
};
// this one is not working, and i would like to use something like this
//instead of solution presented 3 lines above
//$scope.myDeck = addNewCard($scope.myDeck, data);
});
};}
这里有什么问题?我怎么能解决它?
我的猜测是:$ scope.myDeck未正确初始化,但我不知道如何修复它。
顺便说一句。从html的角度来看,一切正常,我只是在myDeck中使用ng-repeat ='myCard'。当我添加它们但没有数据存在时,我可以在gui连续元素中观察。
任何帮助表示感谢。
答案 0 :(得分:2)
在控制器的主体中初始化myDeck,如下所示:
function FightCtrl($scope, $http, $location, $routeParams) {
$scope.myDeck = [];
}
你应该好好去。
您还可以简化将成功处理程序中的卡添加到:
$scope.myDeck.push( { myCard : data.card });