2015-05-30 28 views
1

我想将一个变量绑定到ng-show,现在它只能用于单击事件。例如,我与socket.io工作,我希望当服务器发送消息到客户端,该变量更改,然后触发ng-show,但它不工作!只有当我点击并触发ng-click事件,我希望有约束力的作品。有什么问题?触发ng显示仅适用于ng单击事件

这是我的控制器,在这段代码中我发现服务器消息和console.log工作并打印TRUE,但在ng-show中没有任何内容。下次我点击按钮,它的作品!我不明白为什么

app.controller("mainCtrl", function($scope){ 
$scope.loading=false; 
$scope.socket = io.connect('http://localhost:8080'); 

$scope.getNewEvent = function(){ 
    $scope.socket.emit('getNewEvent'); 
}; 

//here i catch server messages 
$scope.socket.on('setNewEvent', function(data){ 
    $scope.loading = true; //loading variable changes but not effects ng-show 
    console.log($scope.loading); 
}); 
}); 

这是我的HTML:

<div class="loading" ng-show="loading">Loading... {{loading}}</div> 

回答

3

您需要应用范围的变化,因为角度不知道做的插座事件模型更改任何东西(它发生从角度消化生命周期的“外部”):

$scope.socket.on('setNewEvent', function(data){ 
    $scope.loading = true; 
    $scope.$apply(); 
}); 
+0

谢谢。它解决了我的问题 – Fcoder