[英]passing array of ember objects from ember component to template
我正在尝试利用余烬组件来实现可重用性。 我正在尝试使车把模板的代码免费,并且模板仅具有从控制器/组件传递来的字段/内容的占位符。
我在以下实施中遇到了一个奇怪的问题
问题1:当我将对象数组传递给Ember.select contentBinding时,出现以下错误
Uncaught Error: Assertion Failed: The value that #each loops over must be an Array. You passed {_direction: fwd, _from: <Ember.Object:ember257>,<Ember.Object:ember258>, _to: content, _directionMap: [object Object], _readyToSync: true, _oneWay: undefined}
问题2:与模型的价值绑定没有发生。 我想将每个字段的值绑定到模型对象。
这是我的代码看起来像:
App.Core.CeGender = [
Ember.Object.create({ value: "Male", id: 'Male' }),
Ember.Object.create({ value: "Female", id: 'Female' })
],
App.Core.fooFields = [
Ember.Object.create({
type: Ember.TextField,
firstName: "",
label: "First Name",
value: "controller:model.firstName"
}), Ember.Object.create({
type: Ember.TextField,
label: "Middle",
name: "middleInitial",
placeholder: "Middle",
value: "controller:model.middleName"
}),
Ember.Object.create({
type: Ember.Select,
contentBinding: App.Core.CeGender,
placeholder: "gender",
}),
这是我的组件:
App.Core.Component = Ember.Component.extend({
tagName: '',
title: 'Your Information',
classNames: ["xxxxx"],
layoutName: "xxxx",
fields: App.Core.fooFields ,
});
这是我的组件脚本:
<script type="text/x-handlebars" data-template-name="components/xxxx">
{{#each field in fields}}
{{ view field.type
contentBinding=field.contentBinding
name=field.name
id=field.name
placeholder=field.placeholder
data-rule-required=field.dataRuleRequired
data-rule-alphachar=field.dataRuleAlphachar
data-msg-required=field.dataMsgRequired
data-rule-maxlength=field.dataRuleMaxlength
data-set=field.dataSet
data-validation=field.dataValidation
optionValuePath=field.optionValuePath
optionLabelPath=field.optionLabelPath
pattern=field.pattern
}}
{{/each}}
</sript>
任何帮助是极大的赞赏 !!
注意:对于问题1:如果我将App.Core.fooFields作为json元素数组传递给例如:
App.Core.fooFields = [{
type: Ember.TextField,
},
{type: Ember.select,
contentBinding: App.Core.CeGender,
},]
我没有看到我上面提到的错误,并且contentbinding将这个数组添加到模板中的字段中。 我不知道为什么在这些情况下余烬的表现会有所不同。
问题看起来像在这里:
Ember.Object.create({
type: Ember.Select,
contentBinding: App.Core.CeGender,
placeholder: "gender"
})
您应该将'contentBinding'更改为简单的'content'-因为您实际上并未绑定任何内容:
Ember.Object.create({
type: Ember.Select,
content: App.Core.CeGender,
placeholder: "gender"
})
您的模板还需要引用.content
而不是.contentBinding
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.