gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:22:26 24 4
gpt4 key购买 nike

我想将一个变量绑定(bind)到 ng-show,现在它只适用于点击事件。例如,我使用 socket.io,我希望当服务器向客户端发送消息时,该变量发生变化,然后触发 ng-show 但它不起作用!仅当我单击并触发 ng-click 事件时,所需的绑定(bind)才起作​​用。有什么问题吗?

这是我的 Controller ,在这段代码中我捕获了服务器消息并且 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();
});

关于javascript - 触发 ng-show 仅适用于 ng-click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30545433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com