使用参数创建可重复使用的Ember.Select控件

时间:2013-02-11 17:59:40

标签: ember.js

我想创建一个专门的选择控件视图,它应该只是添加一些功能。为简单起见,我希望能够添加标题。

控制/查看:

window.App.ControlsSelectView = Ember.View.extend({
    templateName: 'controls/SelectView',
    title:"Hello Control",
    contentBinding: null
 });

匹配的html:

<div class="sub_heading">
    <h2>{{title}}</h2>
</div>
<div class="inner_12 input_wrapper custom_select">
    {{view Ember.Select
           multiple="true"
           contentBinding= "contentBinding" // how to pass parameters through?
           selectionBinding="content.tempSelectedFunctions"
           optionLabelPath="content.displayname"
           optionValuePath="content.id"
    }}
</div>

用法应该是这样的:

{{ view App.ControlsSelectView 
    contentBinding="content.data.responsibilities" 
    selectionBinding="content.tempSelectedFunctions"
    title="content.responsibilitTitle"
}}

问题是,它不能像那样工作。以上可能吗?或者是否有更好的模式来创建简单的可重用控件?

1 个答案:

答案 0 :(得分:1)

这篇文章帮助我走上正轨:

get content in view from ContentBinding

在控件视图的html中,我需要使用view.propertyname

引用视图参数

工作解决方案:

HTML:

<div class="sub_heading">
    <h2>{{view.title}}</h2>
</div>
{{#if view.content}}
    <div class="inner_12 input_wrapper custom_select">
        {{view Ember.Select
               multiple="view.multiple"
               contentBinding= "view.content"
               selectionBinding="view.selection"
               optionLabelPathBinding="view.optionLabelPath"
               optionValuePathBinding="view.optionValuePath"
        }}
    </div>
{{/if}}

ControlView

window.App.ControlsSelectView = Ember.View.extend({
    templateName: 'controls/SelectView'

});

用法:

{{view App.ControlsSelectView
        title = "Function"
        multiple="true"
        contentBinding="content.data.functions"
        selectionBinding="content.tempSelectedFunctions"
        optionLabelPath="content.displayname"
        optionValuePath="content.id"

}}