0
我收到了Angular的这个令人讨厌的错误,我向指令广播了数据,但指令的$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;
}
我不知道什么时候发生这种情况。起初,我认为这是我第一次加载该网站,但我已经尝试过,因为和数据呈现。
所以,你真的做不同在这里的唯一的事情是父母的结果结合指令:'<结果得到数据=“父(结果)”>'然后'结果:'&''。我很困惑这是如何确保数据在'$ on'中被接收的。 '$ on'不应该在收听它订阅的广播吗? – Growler
忽略绑定部分,我只是补充说,唯一必须注意的是,每当你从父控制器进行广播时,它都会通过$ on在局部范围 –
Sasank上听$,我仍然不明白。我已经完成的范围设定和您所做的工作有什么不同,您为什么总是确保内容已加载? – Growler