Angularjs ng重复不动态添加新项目
我是Angular JS(1)的新手,我对ng repeat有问题。我将socket.io与Angular一起使用。这是我的控制器:Angularjs ng重复不动态添加新项目,angularjs,socket.io,angularjs-ng-repeat,Angularjs,Socket.io,Angularjs Ng Repeat,我是Angular JS(1)的新手,我对ng repeat有问题。我将socket.io与Angular一起使用。这是我的控制器: var messagingApp = angular.module('messagingApp', []); function mainController($scope) { var socket = io.connect(); socket.on('message', function(data){ $scope.users
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);
我可以看到它正在那个on块中运行(通过console.log)。但是,它没有向前端显示任何内容。我的前端如下所示:
<body ng-controller="mainController">
<div ng-repeat="user in users">
<p>{{ user.Name }}</p>
</div>
{{user.Name}
我的理解是,如果您更改模型(在这种情况下是用户),它应该自动更新ng repeat。任何帮助都将不胜感激。在推送到阵列后添加$scope。$apply()。因为您正在更新角度范围之外的模型。所以angularjs不知道模型已经更新了。有关$scope.$apply的详细信息在推送到数组后添加$scope.$apply()。因为您正在更新角度范围之外的模型。所以angularjs不知道模型已经更新了。有关$scope的详细信息。$apply您正在数组中推送对象并尝试迭代数组。所以你应该指定位置
<body ng-controller="mainController">
<div ng-repeat="user in users">
<p>{{ user[$index].Name }}</p>
</div>
{{user[$index].Name}
或者试试这个
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>
socket.on('message',函数(数据){
$scope.users.data.push({'Name':'yeh});
log($scope.users.data);
});
$scope.users={data:[]};
{{user.Name}
您正在数组中推送对象并尝试迭代数组。所以你应该指定位置
<body ng-controller="mainController">
<div ng-repeat="user in users">
<p>{{ user[$index].Name }}</p>
</div>
{{user[$index].Name}
或者试试这个
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>
socket.on('message',函数(数据){
$scope.users.data.push({'Name':'yeh});
log($scope.users.data);
});
$scope.users={data:[]};
{{user.Name}
Add$scope.$apply()在推送到数组之后。@Raj是的,就是这样!把它作为正确的答案贴出来,我会接受的。那么,美元是什么呢。它是否通知前端模型中的某些内容已更改?我们是否只在执行异步操作时使用$apply,还是在模型发生更改时使用$apply?在推送到数组后添加$scope.$apply()。@Raj是的,就是这样!把它作为正确的答案贴出来,我会接受的。那么,美元是什么呢。它是否通知前端模型中的某些内容已更改?我们是否只在执行异步操作时使用$apply,还是在模型发生更改时才使用$apply?