关于 SO 的以下问题有几个类似的问题。我找到的答案要么过时,要么错误,要么不能解决我的问题。
以下片段被精简为这个问题似乎必不可少的内容。
看法:
<div ng-app="main">
<!-- some stuff -->
<ng-include src="getPartial(case.status)"></ng-include>
</div>
包含部分的相关部分:
<div class="controls">
<label class="checkbox" for="iterationDiarySurvey">
<a ng-show="surveyDiaryMailSent == 0" ng-click="sendMail('diaryLinks')">
Send Mail
</a>
<span ng-show="surveyDiaryMailSent == 1" class="badge">Mail sent</span>
</label>
</div>
sendMail()
点击时调用的函数:
$scope.sendMail = function(type) {
<!-- snip -->
} else if (type == 'diaryLinks') {
Mail.create({some data}).then(function() {
$scope.surveyDiaryMailSent = 1;
});
}
};
成功实现承诺时的预期行为$scope.surveyDiaryMailSent
是,由于设置为 1,因此<a>
元素消失而<span>
元素显示。
虽然这不会发生。仅在手动刷新浏览器后。
我在其他地方做同样的(非常相似)的事情,它总是工作得很好。在这种特殊情况下,我只是无法更新视图。
什么没有帮助:
- 将分配或服务调用包装在
$apply
. 导致通常的错误表明“正在消化”。 $apply
在分配后添加,同样的原因