2016-01-04 90 views
-1

爲什麼tab_cards(對象數組)不能分配給$scope.cards如何以角度js顯示ng-repeat中的對象數組

HTML:

<div ng-app="trelloApp" id="cardContainer"> 
    <div ng-controller="displayCardsCtrl"> 
     <article ng-show="cards.length"> 
      <ul id="card-list"> 
       {{cards}} 
       <li ng-repeat="card in cards" > 
        <div class="view"> 
         <center><h1>Titre:</h1></center> 
         <span>{{card.name}}</span> 
         <span class="close" ng-click="removeCard(card)">x</span> 
        </div> 
       </li> 
      </ul> 
     </article> 
    </div> 
</div> 

此Javascript之前我的代碼連接到Trello的API。

的Javascript:

var tab_cards = []; 
var trelloApp = angular.module('trelloApp',[]); 

Trello.get("/boards/M1msSdbt/cards", getCardsSuccess); 

function getCardsSuccess(data){  
    for (var i = 0, l = data.length; i < l; i++){ 
      tab_cards.push(data[i]); 
    } 
} 

trelloApp.controller('displayCardsCtrl', 
function ($scope,tab_cards) { 
    $scope.cards = tab_cards; 
}); 

回答

0

把Trello.get功能和內部控制的成功處理程序,並與

$scope.apply(function(){ 
    $scope.cards = tab_cards; 
} 
0

可能是你 'trello' 功能是assyncronous更換$scope.cards = tab_cards;,也許你的請求沒有得到直到角度的生命週期創建視圖爲止的響應。在我的情況下,當我需要加載assyncronous數據並更新視圖時,我使用角度服務並使用角度「承諾」。我建議你做同樣的事情,而不是在你的函數中使用回調函數,因爲在承諾生命週期強制更新綁定和回調不會發生。

這是一個更好的方法,但如果您沒有時間重構代碼,只需使用$ scope。$ apply()在您的$ scope.cards = tab_cards;