子视图不处理emberjs中的事件

时间:2013-02-18 17:36:51

标签: ember.js

我有一个模板作为页面的一部分,如下所示:

<script type="text/x-handlebars" data-template-name="listbeer">

    <table>
    {{#each content}}
        {{#view "DHApp.BeerrowView"}}
        <tr>
            <td><button>{{name}}</button></td>
            <td>{{brewery}}</td>
        </tr>   
        {{/view}}

    {{/each}}
    </table>
</script>

我还有两个视图,一个封装表,另一个封装行。当我单击按钮时,只有父(整个表)视图点击处理程序被调用(下面的那个表示父选择点击)。我无法调用子视图处理程序。任何想法,为什么我尝试了各种各样的东西,无法到达任何地方?

视图代码如下所示:

DHApp.BeerrowView = Ember.View.extend({
        click: function(evt) {
            alert("ClickableView was clicked!");
        }
    });

DHApp.ListbeerView = Ember.View.extend({
        templateName: 'listbeer',
        click: function(evt) {
            alert("parent picked up view");
        }
    });

由于

1 个答案:

答案 0 :(得分:2)

您需要按以下方式定义BeerrowView

DHApp.BeerrowView = Ember.View.extend({
    tagName: 'tr',
    click: function(evt) {
        alert("ClickableView was clicked!");
    }
});

和模板:

<script type="text/x-handlebars" data-template-name="listbeer">

    <table>
        {{#each content}}
            {{#view "DHApp.BeerrowView"}}
                <td><button>{{name}}</button></td>
                <td>{{brewery}}</td>
            {{/view}}

       {{/each}}
    </table>
</script>

之后的原因是,如果您没有定义标记名称,视图会额外添加div
有关详细信息,请参阅ember view guide