根据guide(似乎总是有风险)我相信以下内容应该有用。
<script type="text/x-handlebars" data-template-name="slideToggle">
{{#if checked}}
<div class="slideToggle">
{{else}}
<div class="slideToggle off">
{{/if}}
<span {{bind-attr on=onText}} {{bind-attr off=offText}}>
{{#if checked}} {{onText}} {{else}}{{offText}}{{/if}}
</span>
</div>
{{input type="checkbox" class="hidden" name=name }}
<label for={{bind-attr name=name}}>{{labelText}}</label>
</script>
App.slideToggle = Ember.View.extend({
templateName: 'slideToggle'
, onText : 'on'
, offText : 'off'
, labelText : ''
, classNames : ['slideToggleWrapper']
, name : ''
, checked : false
});
此视图适用于其他模板,目前如下:
{{view App.slideToggle name="includeJobs" labelText="Jobs" checked=includeJobs}}
<span on="on" off="off">off</span>
<label for="includeJobs">Jobs</label>
<span data-bindattr-6="6" data-bindattr-7="7"></span>
<label data-bindattr-8="8">[script placeholder but no text]</label>
这确实不起作用,因为我需要action
处理程序中使用的脚本逻辑的实际属性名称,而且因为for
的{{1}}属性显然不会如果它被命名为<label>
之类的工作此外,我的data-bindattr-8
根本不会输出!
更新:为清晰起见而编辑。
答案 0 :(得分:1)
每个元素只应使用一个bind-attr
{{bind-attr on='onText' off='offText'}}
你的标签应该是这样的
<label {{bind-attr for='name'}}>
引号不是必需的,它可以双向工作: