gpt4 book ai didi

javascript - 使用 Angular 和套接字切换 HTML 元素

转载 作者:行者123 更新时间:2023-12-03 08:01:06 24 4
gpt4 key购买 nike

我尝试创建一个管理面板,通过它我可以通过套接字实时设置用户的显示。

我将它用于 AngularAngular MaterialNodeJSSocket.io

我有一个带有复选框的后端 Controller 。当我单击 时,该值将被保存以发出 NodeJS

Controller 后端

angular.module('app')
.controller('myController', ['$scope','mySocket', function( $scope, socket ){

$scope.activated = true;

$scope.toggle = function(){
socket.emit('activated',{ value: $scope.activated });
}
});

模板后端

对于 html,我使用像这样的 Angular Material

<md-checkbox ng-model="activated" 
aria-label="Checkbox 1"
ng-change="toggle()">
{{ activated }}
</md-checkbox>

Controller 前端

前端 Controller 除了事件监听socket之外与上一个相同。

socket.on('activated', function( data ){

$scope.$apply(function () {
// here is my problem
// the ng-if don't react when $scope.activated is changed
$scope.activated = data.value;
});
});

Html 前端

<div my-service ng-if="activated"></div>

正如您所理解的,这一切的目的是启用/禁用功能(在我的例子中是一个指令)。

我的问题是,为什么在我的情况下,该指令在通过一次错误后不会重新出现。我的意思是,如果我不更改值而只保留 console.log ,一切正常吗?

谢谢

更新

问题来自 ng-if,这不是一个好方法。你还有别的主意吗?使用 ng-show,没关系,但我想真正从 DOM 中删除元素

最佳答案

您遇到范围问题。因为您在使用 ng-if 的元素上有一个指令 myService 。 ng-if 创建一个隔离的范围,这会导致问题。或者您的属性指令可以创建隔离的范围,问题是相同的。使用 ng-show 你的问题很可能会得到解决。

关于javascript - 使用 Angular 和套接字切换 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567517/

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