我正在尝试使用ember组件来实现可重用性。我试图让车把模板代码免费,模板只是我从控制器/组件传递的字段/内容的持有者。
我在以下实现中遇到了一个奇怪的问题
问题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正在将此数组添加到模板中的字段中。我不知道为什么在这些情况下,余烬的行为方式不同。
答案 0 :(得分:0)
问题就在这里:
Ember.Object.create({
type: Ember.Select,
contentBinding: App.Core.CeGender,
placeholder: "gender"
})
您应该更改&#39; contentBinding&#39;简单的内容&#39; - 因为你实际上没有绑定任何东西:
Ember.Object.create({
type: Ember.Select,
content: App.Core.CeGender,
placeholder: "gender"
})
您的模板还需要引用.content
而不是.contentBinding
。