[英]Promise pending to disable buttons in Ember.js 2
我有一個帶有類別列表的Categories
路線。
當我單擊其中之一時,將輸入類別路徑,然后輸入該路徑的model()
,該路徑會加載項目和任務以及其他內容...
一切都很好,但是:
如果category
模型的isUrgent
為true
,則需要禁用許多按鈕。
category.hbs模板
<button {{action 'something'}} disabled={{if model.isUrgent true false}}>
車型/ category.js
isUrgent: Ember.computed('posts.[]', function () {
let promise = this.get('posts').then(posts => Ember.RSVP.all(posts.map(post => post.get('isUrgent'))).then((values) => values.some((prop) => prop === true)));
return PromiseObject.create({
promise
});
})
user-task
模型具有以下功能:
型號/用戶task.js
isUrgent: Ember.computed.equal('status', 'urgent')
發生的是,當我打開類別頁面時(所以disabled
為false
),以及在下載user-tasks
模型(與該類別相關,因為模板使用的是{{#each posts ...}}
)按鈕已正確禁用(因此, disabled
現在為true
)。
我使用的PromiseObject是否正確? 我需要使用其他東西嗎? 我需要像isPending
這樣的模板中的isPending
嗎?
我需要在模板{{model.isUrgent.isPending}}
嗎? 如何? 為什么模板這么冗長?
為什么要這樣? 我哪里錯了?
只需添加model.isLoading
檢查到您的屬性綁定:
<button disabled={{if model.isLoading true model.isUrgent}}>
新的演示: Ember Twiddle 。
基本上,您可以向類別模型添加一些計算的屬性:
urgentPosts: Ember.computed.filterBy('posts', 'isUrgent'),
postsLoading: Ember.computed.filterBy('posts', 'isLoading'),
isUrgent: Ember.computed.gt('urgentPosts.length', 0)
然后最終利用它:
<button disabled={{if model.postsLoading true model.isUrgent}}>Is Not Urgent (Disabled from beginning and during loading is correct)</button><br><br>
在使用時: model.posts.isPending
而不是postsLoading
也可以正常工作。
如何檢查是否有效:
轉到發布模型並在status: 'urgent'
和status: 'notUrgent'
之間切換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.