Ember.js bind-attr:引导错误或我做错了

时间:2013-10-28 16:24:55

标签: ember.js

根据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
});

此视图适用于其他模板,目前如下:

用法(includeJobs目前为false)

{{view App.slideToggle name="includeJobs" labelText="Jobs" checked=includeJobs}}

预期的HTML(仅限最相关的部分)

<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根本不会输出!

更新:为清晰起见而编辑。

1 个答案:

答案 0 :(得分:1)

每个元素只应使用一个bind-attr

{{bind-attr on='onText' off='offText'}}

你的标签应该是这样的

<label {{bind-attr for='name'}}>

引号不是必需的,它可以双向工作:

http://emberjs.jsbin.com/uDAXayA/2/edit