繁体   English   中英

触发ng-show仅适用于ng-click事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM