2017-07-10 52 views
0

我試圖通過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>

+1

您的變量名稱錯誤。在記錄對象中用'id'改變'title'的位置。 –

+0

@BurakAkyıldız謝謝,我改變了它,但仍然沒有效果。 – salep

回答

1

以正確的方式設置你的sortId。通過使用id : data.data.id而不是id : data.data.title。你的屬性映射是錯誤的,即所有。確保您的排序屬性是與您的其他項目相同的數據類型

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

看看這個demo fiddle

+0

我改變了它,但它仍然以錯誤的順序添加。我加8,然後12,然後9.它應該是8-9-12,但我得到的是12-8-9。 – salep

+0

@salep它按預期工作。我添加了一個演示小提琴。也許你的身份證有什麼問題?確保您的Id與其他數據類型相同。請看這裏 - http://jsfiddle.net/qhwu9kro/如果您的新記錄添加了字符串作爲'Id',則排序錯誤開始。 – lin

+0

你是對的,問題是它的類型。我把它作爲一個字符串發送。非常感謝。 – salep