Ember 无法使用数组迭代模型 属性
Ember can't iterate over model with array property
我有模型,values.js
:
import DS from 'ember-data';
export default DS.Model.extend({
values: [
{ name: "Quality", isChecked: DS.attr('bool') },
{ name: "Inspiration", isChecked: DS.attr('bool') },
{ name: "Creativity", isChecked: DS.attr('bool') },
{ name: "Commitment", isChecked: DS.attr('bool') },
{ name: "Honour", isChecked: DS.attr('bool') }
]
});
在路线 passport-values.js
中,我正在创建一个价值观模型:
import Ember from 'ember';
export default Ember.Route.extend({
model () {
return this.store.createRecord('values');
}
});
我有一个组件,passport-basic.hbs
:
<h2>{{title}}</h2>
<p>{{content}}</p>
<form>
<fieldset class="checkboxes">
{{#each model as |value index|}}
<label>{{input type="checkbox" onchange=(action "change") checked=value.isChecked name="value.name"}}{{value.name}}</label>
{{/each}}
</fieldset>
</form>
我正在使用我的模板 passport-values.hbs
,并通过以下方式传递我的模型:
{{passport-basic title="" content="" model=values}}
在组件中,我试图遍历模型中数组中的所有值,以显示带有名称的标签和表示每个值的 isChecked 选项是否为 true/false 的复选框。我已经尝试过很多其他来源的想法,但我似乎无法做到这一点。
感谢您的帮助,我对 Ember.js 还是很陌生,我想知道我是否遗漏了什么?
模型并不意味着包含数据,它们定义了将 JSON 有效负载转换为记录的属性。
Attributes are used when turning the JSON payload returned from your server into a record, and when serializing a record to save back to the server after it has been modified. https://guides.emberjs.com/v2.15.0/models/defining-models/#toc_defining-attributes
如果您不需要持久化您的数据或者您只是测试一个模板。您可以定义一个数组并将其作为模型传递给您的路线。
import Ember from 'ember';
export default Ember.Route.extend({
values: [
{ name: "Quality", isChecked: false },
{ name: "Inspiration", isChecked: false },
{ name: "Creativity", isChecked: false },
{ name: "Commitment", isChecked: false },
{ name: "Honour", isChecked: false }
],
model () {
return this.get('values');
}
});
编辑:作为更正,从技术上讲,您可以在没有数据库的情况下以这种方式创建记录,只是无法保存它。
正确的语法是。
import DS from 'ember-data';
export default DS.Model.extend({
quality: DS.attr('boolean'),
inspiration: DS.attr('boolean'),
honor: DS.attr('boolean'),
creativity: DS.attr('boolean'),
commitment: DS.attr('boolean')
});
您可以按照 Defining Models and Finding Records 指南中的示例按照您描述的方式迭代集合,并利用 Ember 的内置方法来持久化记录。
您的价值模型应如下所示:
import DS from 'ember-data';
export default DS.Model.extend({
quality: DS.attr('boolean'),
inspiration: DS.attr('boolean'),
honor: DS.attr('boolean'),
creativity: DS.attr('boolean'),
commitment: DS.attr('boolean')
});
然后在你的路线中,做
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').findAll('value');
}
});
您的模型挂钩将 return 一组值,您可以按照您的描述将这些值传递给组件:
{{passport-basic title="" content="" model=values}}
您可以像这样在模板中使用值属性:
{{#each model as |value|}}
<p>{{value.honor}}</p>
{{/each}}
我有模型,values.js
:
import DS from 'ember-data';
export default DS.Model.extend({
values: [
{ name: "Quality", isChecked: DS.attr('bool') },
{ name: "Inspiration", isChecked: DS.attr('bool') },
{ name: "Creativity", isChecked: DS.attr('bool') },
{ name: "Commitment", isChecked: DS.attr('bool') },
{ name: "Honour", isChecked: DS.attr('bool') }
]
});
在路线 passport-values.js
中,我正在创建一个价值观模型:
import Ember from 'ember';
export default Ember.Route.extend({
model () {
return this.store.createRecord('values');
}
});
我有一个组件,passport-basic.hbs
:
<h2>{{title}}</h2>
<p>{{content}}</p>
<form>
<fieldset class="checkboxes">
{{#each model as |value index|}}
<label>{{input type="checkbox" onchange=(action "change") checked=value.isChecked name="value.name"}}{{value.name}}</label>
{{/each}}
</fieldset>
</form>
我正在使用我的模板 passport-values.hbs
,并通过以下方式传递我的模型:
{{passport-basic title="" content="" model=values}}
在组件中,我试图遍历模型中数组中的所有值,以显示带有名称的标签和表示每个值的 isChecked 选项是否为 true/false 的复选框。我已经尝试过很多其他来源的想法,但我似乎无法做到这一点。
感谢您的帮助,我对 Ember.js 还是很陌生,我想知道我是否遗漏了什么?
模型并不意味着包含数据,它们定义了将 JSON 有效负载转换为记录的属性。
Attributes are used when turning the JSON payload returned from your server into a record, and when serializing a record to save back to the server after it has been modified. https://guides.emberjs.com/v2.15.0/models/defining-models/#toc_defining-attributes
如果您不需要持久化您的数据或者您只是测试一个模板。您可以定义一个数组并将其作为模型传递给您的路线。
import Ember from 'ember';
export default Ember.Route.extend({
values: [
{ name: "Quality", isChecked: false },
{ name: "Inspiration", isChecked: false },
{ name: "Creativity", isChecked: false },
{ name: "Commitment", isChecked: false },
{ name: "Honour", isChecked: false }
],
model () {
return this.get('values');
}
});
编辑:作为更正,从技术上讲,您可以在没有数据库的情况下以这种方式创建记录,只是无法保存它。
正确的语法是。
import DS from 'ember-data';
export default DS.Model.extend({
quality: DS.attr('boolean'),
inspiration: DS.attr('boolean'),
honor: DS.attr('boolean'),
creativity: DS.attr('boolean'),
commitment: DS.attr('boolean')
});
您可以按照 Defining Models and Finding Records 指南中的示例按照您描述的方式迭代集合,并利用 Ember 的内置方法来持久化记录。
您的价值模型应如下所示:
import DS from 'ember-data';
export default DS.Model.extend({
quality: DS.attr('boolean'),
inspiration: DS.attr('boolean'),
honor: DS.attr('boolean'),
creativity: DS.attr('boolean'),
commitment: DS.attr('boolean')
});
然后在你的路线中,做
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').findAll('value');
}
});
您的模型挂钩将 return 一组值,您可以按照您的描述将这些值传递给组件:
{{passport-basic title="" content="" model=values}}
您可以像这样在模板中使用值属性:
{{#each model as |value|}}
<p>{{value.honor}}</p>
{{/each}}