gpt4 book ai didi

javascript - 如何使用 Ember ArrayController 获取对象集合?

转载 作者:行者123 更新时间:2023-11-29 14:48:17 26 4
gpt4 key购买 nike

我无法用我目前正在做的事情获取一个奖项集合,我在获取这个集合时做错了什么?

我不断收到以下错误:

错误:处理路由时出错:奖励断言失败:ArrayController 期望 model 实现 Ember.Array 混合。这通常可以通过使用 `Ember.A()

包装您的模型来解决

路由器.咖啡


...

Router.map ->
# Contests
@resource 'contests'
@resource 'contest', { path: '/contests/:contest_id' }

# Awards
@resource 'awards', { path: '/contests/:contest_id/awards' }
@resource 'award', { path: '/contests/:contest_id/awards/:award_id' }

# Ads
@resource 'ads', { path: '/contests/:contest_id/ads' }
@resource 'ad', { path: '/contests/:contest_id/ads/:ad_id' }

...

award.coffee 模型


`import DS from 'ember-data'`

AwardModel = DS.Model.extend
# Attributes
description: DS.attr 'string'
amount: DS.attr 'string'
adId: DS.attr 'string'
adType: DS.attr 'string'
state: DS.attr 'string'
thumbnail: "http://placehold.it/290x218"

# Relationships
ad: DS.belongsTo 'ad', async: true
contest: DS.belongsTo 'contest', async: true

`export default AwardModel`

contest.coffee 模型


`import DS from 'ember-data'`

ContestModel = DS.Model.extend
# Attributes
title: DS.attr 'string'
truncatedTitle: DS.attr 'string'
state: DS.attr 'string'
totalAwards: DS.attr 'string'
totalAds: DS.attr 'string'
startsOn: DS.attr 'date'
endsOn: DS.attr 'string'
daysLeft: DS.attr 'string'
thumbnail: DS.attr 'string'
createdAt: DS.attr 'date'

# Relationships
ads: DS.hasMany 'ad', async: true
awards: DS.hasMany 'award', async: true

`export default ContestModel`

awards.coffee Controller


`import Ember from 'ember'`

AwardsController = Ember.ArrayController.extend
videoAwards: '',
printAwards: '',

setAwards: (type) ->
awards = @filter((award) ->
award.get('adType') == type.capitalize()
)
@set(type + 'Awards', awards)

actions:
sortAwardsByType: ->
@setAwards('video')
@setAwards('print')
# TODO: find out why this is not working
# ['video', 'print'].forEach (type) ->
# @setAwards(type)

`export default AwardsController`

awards.coffee 路线文件


`import Ember from 'ember'`
`import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'`
AwardsRoute = Ember.Route.extend AuthenticatedRouteMixin,
model: ->
# How to fetch the awards of the given contest here with ember data
setupController: (controller, model) ->
controller.set('model', model)
controller.send('sortAwardsbyType')
`export default AwardsRoute`

最佳答案

这会起作用:

// awards route
model: (params) ->
@store.find('contest', params.contest_id).then((contest) ->
contest.get('awards')
)

关于 promise 链的更多信息 here .

然后就可以在awards controller中对模型进行过滤了。

关于javascript - 如何使用 Ember ArrayController 获取对象集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com