Angular.js范围变量undefined,ng-repeat初始状态

时间:2013-12-31 19:17:30

标签: javascript angularjs

嗨,我最近开始玩角度&节点,我立即遇到了问题。

我有一个简单的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连续元素中观察。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

在控制器的主体中初始化myDeck,如下所示:

function FightCtrl($scope, $http, $location, $routeParams) {

   $scope.myDeck = [];

}

你应该好好去。

您还可以简化将成功处理程序中的卡添加到:

$scope.myDeck.push( { myCard : data.card });