[英]Triggering ng-show works only with ng-click event
我想将变量绑定到ng-show
,现在它只适用于click事件。 例如,我使用socket.io
,我希望当服务器向客户端发送消息时,该变量会发生变化,然后触发ng-show
但它不起作用! 只有当我点击并触发ng-click
事件时,我希望绑定有效。 有什么问题?
这是我的控制器,在这段代码我捕获服务器消息和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>
您需要应用范围更改,因为Angular不知道有关通过套接字事件对模型所做的更改(它发生在Angular摘要生命周期的“外部”):
$scope.socket.on('setNewEvent', function(data){
$scope.loading = true;
$scope.$apply();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.