2016-12-16 59 views
0

我是Angular JS(1)的新手,我遇到了ng-repeat的問題。我正在使用Angular的socket.io。這裏是我的控制器:ng-repeat不會動態添加新項目

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

function mainController($scope) { 

    var socket = io.connect(); 
    socket.on('message', function(data){ 
     $scope.users.push({'Name': 'yeh'}); 
     console.log($scope.users); 
    }); 

    $scope.users = []; //if I put stuff here and comment out socket stuff, it shows in the front-end 
}; 

messagingApp.controller('mainController',mainController); 

我可以看到它在塊內部(通過console.log)。但是,它沒有向前端顯示任何內容。我的前端如下:

<body ng-controller="mainController"> 

<div ng-repeat="user in users"> 
    <p>{{ user.Name }}</p> 
</div> 

我的理解是,如果你改變模型(在這種情況下,用戶),它會自動更新NG重複。任何幫助,將不勝感激。

+0

加$範圍。$適用()。 – Raj

+0

@Raj是的,就是這樣!發佈它作爲一個正確的答案,我會接受它。那麼什麼是$應用。它是否通知前端模型中的某些內容已更改?我們只適用於做異步的東西或任何時候模型改變的時候嗎? – fur866

回答

0

您正在推送數組中的對象並嘗試迭代Array。所以你應該指定位置。

<body ng-controller="mainController"> 
    <div ng-repeat="user in users"> 
     <p>{{ user[$index].Name }}</p> 
    </div> 

或推到後陣試試這個..

socket.on('message', function(data){ 
     $scope.users.data.push({'Name': 'yeh'}); 
     console.log($scope.users.data); 
    }); 

    $scope.users = {data:[]}; 





<div ng-repeat="user in users.data"> 
     <p>{{ user.Name }}</p> 
    </div>