CollectionView中的EmberJS和Handlerbars助手

时间:2013-03-01 22:58:48

标签: javascript ember.js handlebars.js

我正在尝试使用集合视图,并且在每个项目视图中都使用了handlerbars帮助程序,但我无法使用帮助程序函数将我的路径扩展为值。

Ember.CollectionView.create({content: App.AController,
    itemViewClass: App.ItemView
});
Em.Handlebars.registerHelper('editable', function (path, options) {
    options.hash.valueBinding = path;
    return Em.Handlebars.helpers.view.call(this, App.EditField, options);
});
<script type="text/x-handlebars" data-template-name="edit-field">
    {{#if isEditing}}
        {{view Ember.TextField valueBinding = "value" propagatesEvents = true}} 
    {{else}}
        {{#if value}}
            {{value}}
        {{else}}
            <span class="no-name">empty</span>
        {{/if}}
    {{/if}}
</script>
<script type="text/x-handlebars" data-template-name="item-view">
    {{view.content.name}}
    {{editable view.content.name}}
</script>

http://jsfiddle.net/epigeon/dNqsV/29/,完整的代码示例。

1 个答案:

答案 0 :(得分:3)

“isEditing”属性位于视图上,但collectionView itemView的上下文是该视图的内容。要在模板中引用视图中的属性,您必须使用“view”启动属性路径,如“view.isEditing”。

我在你的小提琴中做了这个改变,这个例子看起来像我期望的那样工作。