ember.js 控制器中的排序模型
Posted
技术标签:
【中文标题】ember.js 控制器中的排序模型【英文标题】:ember.js Sorting model in controller 【发布时间】:2018-06-20 05:04:47 【问题描述】:ember.js 版本:2.18.0
型号:
export default DS.Model.extend(
name: DS.attr('string'),
description: DS.attr('string'),
songs: DS.hasMany('song')
)
控制器:
export default Controller.extend(
sortBy: ['name:asc', 'description:asc'],
sortedBands: computed.sort('model', 'sortBy')
ember 给了我以下错误:
Only string, number, symbol, boolean, null, undefined, and function are allowed as default properties ember/avoid-leaking-state-in-ember-objects
【问题讨论】:
你确定这是一个错误吗?究竟什么不起作用?我知道你在风格指南中发布的规则(在 Engwan 的答案中链接),但这只是一个建议。 【参考方案1】:错误是因为您将数组设置为对象 (Controller
) 中属性 (sortBy
) 的默认值。
您可以在init
挂钩中设置数组值。
export default Controller.extend(
sortedBands: computed.sort('model', 'sortBy'),
init()
this._super(...arguments);
this.sortBy = ['name:asc', 'description:asc'];
查看此链接了解更多信息:https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/avoid-leaking-state-in-ember-objects.md
【讨论】:
【参考方案2】:我在使用空 js 对象作为控制器变量的默认属性时遇到了同样的错误。
Object.freeze() 为我工作。
解决问题的另一种方法:
export default Controller.extend(
sortedBands: Object.freeze(['name:asc', 'description:asc']),
...
【讨论】:
以上是关于ember.js 控制器中的排序模型的主要内容,如果未能解决你的问题,请参考以下文章