在我的控制器中,我有以下代码:
PartnersService.GetNonPartnerBanks().success(function (data) {
vm.nonPartnerBanksList = data;
}).error( function () {
vm.nonPartnerBanksList = [];
});
该服务称之为:
service.GetNonPartnerBanks = function() {
var nonPartnerBankUrl = config.baseUrl + 'public/nonPartnerBanks';
return $http.get(nonPartnerBankUrl);
};
这一切都有效,但如果服务器需要更长时间才能回复,则应用程序的UI会冻结。
我做错了不是$http
服务使用AJAX和promises,以便在进行调用时继续呈现UI?
使用数据的模板部分:
<ol class="nya-bs-select nya-dashboard"
required
name="futurePartner"
id="futurePartner"
ng-model="npc.futurePartner"
data-size="5"
ng-change="npc.hideSucessMessage()"
title-tpl="<span>{{npc.partnerSelectTitle}}</span>"
deep-watch="true"
no-search-title-tpl="<span>{{'general.NoSearchResult' | translate}}</span>"
data-live-search="true">
<li nya-bs-option="bankItem in npc.futurePartnerList" data-value="bankItem.id">
<a>
{{bankItem.name}}
</a>
</li>
</ol>
跟进:
Vita的回答让我走上了正确的道路,并不是因为$ http阻止了我的用户界面,我在ajax电话上播放了动画,给人的印象是Ui冻结了
答案 0 :(得分:2)
$ http调用是异步的,它返回promise,你可以使用.then和.catch作为ussual(成功和错误回调只是出于历史原因并且不推荐使用)
但即使他们没有阻止你的UI,它必须是不同的东西。
“冻结”是什么意思?
从哪里调用方法? 你在route obejct resolve属性中使用它吗?如果是 - 那就是它的特征 - 等待所有承诺全部归档。
Definitelly问题在其他地方。 你能提供更多信息吗?或者甚至更好一些jsbin?