无需单击即可更新$scope,并对数组进行动态排序



我正在尝试在通过 websockets 添加新记录时动态更新视图。最新记录(默认情况下具有最高的 ID(应位于底部,但它是随机添加的。我找不到为什么会这样。

angular.module('Persistence').controller("PersistenceController", [
"$scope",
"$http",
"$filter",
"$timeout",
"$mdDialog",
"$sce",
function ($scope, $http, $filter, $timeout, $mdDialog, $sce) {
$scope.records = [];
$scope.sortById = 'id';
var socket2 = io.connect('192.168.1.100:3001');
socket2.on('newInformation', function (data) {
$scope.records.push({
title: data.data.title,
id : data.data.id,
name: data.data.name
});
$scope.$apply();
});    
}
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="Persistence" ng-controller="PersistenceController">
<div ng-repeat="record in records | orderBy : sortById">
<div>{{record.id}}</div>
<div>{{record.title}}</div>
<div>{{record.name}}</div>        
</div>
</body>

以正确的方式设置您的 sortId。通过使用id : data.data.id而不是id : data.data.title。您的属性映射是错误的,仅此而已。确保排序属性与其他项的数据类型相同

$scope.records.push({
id : data.data.id,
title: data.data.title,
name: data.data.name
});

看看这个演示小提琴

最新更新