我是Angular JS(1)的新手,我遇到了ng-repeat的问题。我正在使用带有Angular的socket.io。这是我的控制器:
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-repeat。任何帮助将不胜感激。
答案 0 :(得分:3)
在推送到数组后添加$ scope。$ apply()。因为您正在更改角度范围之外的模型。因此angularjs不知道模型已更新。更多关于$ scope。$ apply http://tutorials.jenkov.com/angularjs/watch-digest-apply.html
答案 1 :(得分: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>