【发布时间】:2015-08-17 21:44:11
【问题描述】:
我正在尝试使用 ember.js 显示一个简单的动态表单,我对 ember 和前端框架来说非常陌生。
我正在使用
- 灰烬:2.0.0
- Ember 数据:2.0.0-beta.1
- jQuery : 1.11.3
- ember-cli:1.13.6
JSON 负载如下:要生成一些字段并且必须启用一些元素。
JSON:
{
"create-fields": [{
"id": 1,
"field": "widgetName",
"label": "Widget Name",
"tooltip": "Widget Name",
"category": "textfield",
"url": "",
"required": true,
"widgetform_id": 1
}, {
"id": 2,
"field": "APIKey",
"label": "API Key",
"tooltip": "API Key",
"category": "textfield",
"url": "",
"required": true,
"widgetform_id": 1
}, {
"id": 3,
"field": "Campaign",
"label": "Select Campaign",
"tooltip": "Select Campaign",
"category": "select",
"url": "campaigns/",
"required": false,
"widgetform_id": 1
}, {
"id": 4,
"field": "checkbox",
"label": "Sample Checkbox",
"tooltip": "Sample Checkbox",
"category": "checkbox",
"url": "",
"required": false,
"widgetform_id": 1
}],
"enable-fields": [{
"id": 1,
"field": "showAdvanced",
"required": false,
"widgetform_id": 1
}, {
"id": 2,
"field": "notification",
"required": false,
"widgetform_id": 1
}, {
"id": 3,
"field": "enableNotif",
"required": false,
"widgetform_id": 1
}, {
"id": 4,
"field": "email",
"required": false,
"widgetform_id": 1
}, {
"id": 5,
"field": "phone",
"required": false,
"widgetform_id": 1
}, {
"id": 6,
"field": "reqType",
"required": false,
"widgetform_id": 1
}, {
"id": 7,
"field": "dataFormat",
"required": false,
"widgetform_id": 1
}, {
"id": 8,
"field": "appendUrlParams",
"required": false,
"widgetform_id": 1
}],
"widgetforms": [{
"id": 1,
"formname": "Edit Widget",
"enable-field_ids": [1, 2, 3, 4, 5, 6, 7, 8],
"create-field_ids": [1, 2, 3, 4]
}]
}
//模型
widgetform.js:
import DS from 'ember-data';
export default DS.Model.extend({
formname: DS.attr(),
createFields: DS.hasMany('createFields'),
enableFields: DS.hasMany('enableFields')
});
create-field.js:
import DS from 'ember-data';
export default DS.Model.extend({
field: DS.attr(),
label: DS.attr(),
tooltip: DS.attr(),
category: DS.attr(),
url: DS.attr('string', {defaultValue: ""}),
required: DS.attr('boolean'),
widgetform: DS.belongsTo('widgetform')
});
启用字段.js:
import DS from 'ember-data';
export default DS.Model.extend({
field: DS.attr(),
required: DS.attr('boolean'),
widgetform: DS.belongsTo('widgetform')
});
模板
widgetform.hbs:hbs 没有所有字段,它只是一个模型。
<div class="container-fluid">
{{#each model as |form|}}
<form class="form-horizontal">
<fieldset>
<header id="header">
<h1>{{form.formname}}</h1>
</header>
<section id="main">
<ul id="field-list">
{{form.createFields}}
{{#each form.createFields as |element|}}
<li>test1 {{element.field}}</li>
{{/each}}
</ul>
</section>
</fieldset>
</form>
{{/each}}
</div>
到目前为止,我已经能够使用 chrome 中的 ember-inspector 查看各个模型中的数据。
但是,在使用{{form.createFields}} 的模板中,我得到一个<DS.PromiseManyArray>,而{{form.createFields.content}} 是一个<DS.ManyArray> 对象,我无法遍历这两个对象。
我放在模板中的test1 没有打印在页面中。但是,{{form.formname}} 属性可用并打印在页面中。
我检查了很多类似this 的问题,一般建议是添加 id 列表,但我已将它们添加到 JSON 中但我看不出有什么区别
我在这里做错了什么?有什么想法吗?
【问题讨论】:
-
我也遇到了同样的问题,有没有其他方法不使用jsonapi...目前使用ember和data 2.0.0,以及活动模型适配器...
-
我认为这是一些疯狂的环境问题,但如果它被复制,您可以在 ember-data 问题中发布关于此的内容。 github.com/emberjs/data/issues
标签: ember.js ember-data ember-cli