触发ng-show只适用于ng-click事件
Triggering ng-show works only with ng-click event
我想绑定一个变量到ng-show
,现在它只适用于点击事件。例如,我与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并不知道socket事件对model所做的任何更改(它发生在Angular摘要生命周期之外):
$scope.socket.on('setNewEvent', function(data){
$scope.loading = true;
$scope.$apply();
});
相关文章:
- AngularJs的ng-click$事件将子元素作为目标传递
- ng-click事件不适用于Angular JS中的链接
- AngularJS + NG-Grid 将 row.column.field 传递到 ng-click 事件中
- AngularJS ng-click事件在ng-repeat中未触发
- ng-click事件在ionic中不起作用,但它在Angular中起作用
- 将ng-click事件添加到angular ui手风琴中
- 仅显示多个ng-click事件angularjs中单击的元素值
- 如何使用angular js在html元素中绑定javascript和ng-click事件
- 不能访问ng-repeat项目中的ng-click事件
- Onclick和ng-click事件不工作
- 如何触发ng-click事件
- 在Angular的ng-click事件中触发一个指令
- AngularJS -多个ng-click -事件冒泡
- 所有的ng-click事件都触发两次
- UI router ng click事件未触发
- Angularjs的ng-click事件在ajax加载的元素上没有触发
- ng-click事件在angular js中绑定到子节点li
- 如何在AngularJs中编写一个收集ng-click事件的数组
- Angular.js,取消ng-click事件
- angular ng click事件未启动