表现出承诺'加载状态
showing promises' loading state
好吧,这可能是一个复杂的问题:
我有一个控制器,它根据几个选项加载额外的数据。在相应的模板中,调用一个组件,该组件将显示该数据
我想要实现的是在加载数据时显示loading
状态
我终于用这个(这里是非常精简的)代码做到了这一点:
(基本上,我在promise上设置了一个参数,回调到组件中的传递)
// controller
fetchedEvents: Ember.computed('filterEventsSwitchFuturePast', function() {
let _this = this;
this.set('loadingEvents', true);
if(this.get('filterEventsSwitchFuturePast')) {
let promise = this.store.query('event', {..some filters here...} });
promise.then(function() { //promise resolved
_this.set('loadingEvents', false);
});
return promise;
} else {
let promise = this.store.query('event', {..other filters here...});
promise.then(function() { //promise resolved
_this.set('loadingEvents', false);
});
return promise;
}
}),
// template calling the component
{{event/event-list
events=fetchedEvents
isLoading=loadingEvents
}}
这给了我该组件中的加载状态,该加载状态在加载所有数据后解析。在这里之前一切都很好。
现在我的问题来了:
我需要根据模型的相关events
计算fetchedEvents
属性,这样,当我添加新事件时,列表就会更新
因此,我在观察到的属性中添加了model.events
:
// controller
fetchedEvents: Ember.computed('filterEventsSwitchFuturePast', 'model.events', function() {
//....the rest is the same as before!
}),
现在列表得到了更新,但我的有用属性loadingEvents
似乎在它的状态之间跳跃。它开始不加载,然后加载一秒钟,然后返回到不加载-,但结果为零-并最终达到正确的最终状态
结果是一个UI一直在说-没有结果-加载-没有结果,下面是结果
我认为这不是一个真正可爱的UI。
路由的/组件的/模板的模型早在发生之前就已经加载并显示了,所以我认为挂接可能没有解决方案。
你们有什么建议我可以解决/改进吗
还有其他钩子我可以进去吗?
我在Ember2.0
我认为调用者有义务在承诺传递给组件(事件列表)之前解决这些承诺
fetchedEvents: [],
somethingChanged: function() {
if(Ember.isNone(x) && Ember.isNone(y)) return;
this.set('isLoading', true);
var promise;
if(this.get('x')) {
promise = "firstFilter"
} else {
promise = "secondFilter"
}
promise.then(resolved => {
this.set('isLoading', false);
this.get('fetchedEvents').pushObject(resolved);
}, reportErrors);
}.observes('model.events.[]', 'longNamedThingy')
相关文章:
- ui路由器的惰性加载状态
- 在加载状态之前,我需要在angular js中为每个状态添加角色
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 表现出承诺'加载状态
- mediaelement.js/html5视频在前进过多或后退过多时永远保持加载状态
- Chrome应用程序:无法检索文件加载状态
- 将复选框重置为基于先前复选框的页面加载状态's状态
- UI 路由器不断重定向到索引,并且不加载状态/视图
- 引导手风琴.保留多个面板的页面加载状态
- 如何检测发布商 DFP 广告的 Google 双击的加载状态
- Angularjs ng-repeat中的Angleularjs按钮加载状态指令
- Redux-管理预加载状态
- p:fileDownload的策略,带有对话框和加载状态
- Knockout模板在某些情况下保持加载状态
- 当AJAX调用完成时重置Bootstrap加载状态按钮
- 刷新页面后在jtree中从加载状态返回数据
- 如何摆脱这个{{用户.Id}}(花括号)在页面处于加载状态时使用
- Ui-router加载状态,然后我怎么运行一个函数
- 如何显示加载状态的百分比ajax响应
- 如何监控图像源的完全加载状态