Javascript 承诺将禁用Ember.js 2中的按钮

Javascript 承诺将禁用Ember.js 2中的按钮,javascript,ember.js,promise,ember-data,relationship,Javascript,Ember.js,Promise,Ember Data,Relationship,我有一个Categories路线,当然有一个Categories列表 当我点击其中一个时,类别路由被输入,然后这个路由的model() 一切都很好,但是: 如果类别模型的为真,我需要禁用许多按钮 category.hbs模板 <button {{action 'something'}} disabled={{if model.isUrgent true false}}> 用户任务模型具有以下特点: 模型/用户任务.js isUrgent: Ember.computed('post

我有一个
Categories
路线,当然有一个Categories列表

当我点击其中一个时,类别路由被输入,然后这个路由的
model()

一切都很好,但是:

如果
类别
模型的
为真
,我需要禁用许多按钮

category.hbs模板

<button {{action 'something'}} disabled={{if model.isUrgent true false}}>
用户任务
模型具有以下特点:

模型/用户任务.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
    });
})
isUrgent: Ember.computed.equal('status', 'urgent')
问题 当我打开分类页面时(因此
禁用
错误
),在下载
用户任务
模型后(与该分类相关,因为模板使用类似
{{{each posts…}}
),按钮被正确禁用(因此,
disabled
现在是
true

问题: 我正确使用了PromiseObject?我需要使用其他东西?我需要模板中的一些东西,如
isPending

我需要在模板中使用
{{model.isUrgent.isPending}}
?如何使用?为什么在模板中如此冗长


为什么会这样?我哪里错了?

只需添加
模型。isLoading
检查属性绑定:

<button disabled={{if model.isLoading true model.isUrgent}}>
然后最终利用它:

<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
而不是
postsload
也可以正常工作

如何检查此功能是否有效:


转到post model并在
状态:“紧急”
状态:“非紧急”

之间切换,使用
DS.PromiseArray
而不是
PromiseObject
有什么区别?毕竟我返回的是真/假值,不是数组。所以我认为不正确。我误解了你的问题。尝试
model.isUrgent.I分类消费。
你可以自己在ember twiddle上试试吗?我在iSpend上运气不好!不起作用。你可以尝试将
模型/post.js
状态更改为
'somethingelsethanemergent'
并尝试。它总是被禁用。我正在更新演示…它正在工作。继续。检查它。更改为false在模型中,查看我的演示是否正常工作。如果出现故障,则您的逻辑是基于状态计算is紧急。是的,我现在也理解了。我如何更改该计算。相等?我需要基于状态的true/false,我该怎么做?它返回true或false。为什么它不工作?在检查所有子实体时,这并不是小事,我知道猜测
<button disabled={{if model.postsLoading true model.isUrgent}}>Is Not Urgent (Disabled from beginning and during loading is correct)</button><br><br>