Angularjs的数据不会在调用$apply时更新



我有一个控制器,通过rest读取数据并将其显示在表中-这部分工作正常。另外,我添加了一个WebSocket,并希望更新表,如果WebSocket接收到数据。代码如下:

app.controller('allBookingsCtrl', function($scope, $http, currentUser){
    $scope.bookingsList = [];
    var ws = new WebSocket(wsRootUrl + '/allbookings');
    ws.onmessage = function(message){
        $scope.$apply(function(){
            $scope.bookingsList = message.data;
            alert(message.data);//displays correct data!
        });
    };
    $http.get(rootUrl + '/timetracker/booking/all').success(function(response) {
        $scope.bookingsList = response;
    });
});

问题是在apply调用时表没有更新。我调试并可以通过更改来自另一个浏览器的数据来触发onmessage。数据的内容也是正确的,不会抛出错误。

那么如何用websocket接收到的数据更新表/作用域?

这里是html:

<table ng-controller="allBookingsCtrl" class="table">
        <thead>
            <tr>
                <th>#</th>
                <th>user</th>
                <th>project</th>
                <th>start</th>
                <th>end</th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="booking in bookingsList">
                <td>{{$index + 1}}</td>
                <td>{{booking.usersProjects.user.name}}</td>
                <td>{{booking.usersProjects.project.name}}</td>
                <td>{{booking.start | date:'yyyy-MM-dd HH:mm:ss' }}</td>
                <td>{{booking.end | date:'yyyy-MM-dd HH:mm:ss' }}</td>
            </tr>
        </tbody>
    </table>
小编辑

:如果我在消息末尾添加alert(data);,我将看到具有正确数据的警报!所以只有列表的应用程序不能正常工作。

添加plunkr 我试着在plunkr中重现这个,没有websocket -试图在ng-click上获得更新。但是这也不工作-这里的点击没有做任何事情

你能改变这一行吗

$scope.bookingsList = data;

$scope.bookingsList = message.data;

相关内容

  • 没有找到相关文章

最新更新