指令数据有时在广播后不出现
directive data sometimes does not appear after broadcast
我在Angular中得到了这个恼人的bug,我向指令广播数据,但指令的$on
没有接收到它。
因此,我的表根本没有填充,对用户来说看起来很糟糕。
test_results.html(包含一个指令的实例):
<div>
<h1>Test Results</h1>
...
<results></results>
</div>
resultsCtrl.js控制器:
$timeout(function () {
$rootScope.$broadcast('show-results', test_session.question_objects);
}, 100);
results.html指令模板(大部分字段被去掉):
<div class="results">
<table class="table table-bordered table-striped">
<thead>
<tr>
<td ng-if="average_times && !$root.is_mobile">
<span ng-click="sortType = 'question.average_timing'; sortReverse = !sortReverse">
Avg. Time
</span>
</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="q in questions | orderBy:sortType:sortReverse | filter:searchQuestions track by $index">
<td ng-if="q.average_timing && !$root.is_mobile" ng-click="$root.openDirections('question', q)">{{ q.average_timing }}</td>
</tr>
</tbody>
</table>
</div>
results.js指令:
scope.$on('show-results', function(event, test_session) {
setTestSessionData(test_session);
});
...
function setTestSessionData (test_session) {
scope.questions = test_session;
}
我不知道这到底是什么时候发生的。一开始我以为这是我第一次加载网站的时候,但我已经尝试过了,数据被渲染了。
当您执行$rootScope.$broadcast
时,所有通过$scope.$on
注册到这些事件的子范围都将捕获该事件。指令作用域也是如此。如果您在事件侦听器中更新模型,它将在视图中更新。
工作柱塞:https://plnkr.co/edit/4iokGsfPH5IqNdecjaGd?p=preview
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 在侦听特定端口时接收广播的数据包
- 如何从广播流中获取mp3元数据(无icecast,无shoutcast)
- 如何在流星应用程序上广播数据
- 套接字IO节点,用于向所有客户端广播数据
- BLE iOS Nativescript:广播数据失败
- 指令数据有时在广播后不出现
- AngularJS:将数据从控制器传递到控制器,无需工厂、服务或广播
- 发送广播数据报