1

次のようなページの一部としてテンプレートがあります。

<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>

また、2つのビューがあります。1つはテーブルをカプセル化し、もう1つは行をカプセル化します。ボタンをクリックすると、親(テーブル全体)ビューのクリックハンドラーのみが呼び出されます(親がクリックを取得したことを示す下のハンドラー)。子ビューハンドラーを呼び出せません。いろいろ試してみて、どこにも行けない理由はありますか?

ビューコードは次のようになります。

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");
        }
    });

ありがとう

4

1 に答える 1

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、タグ名を定義しない場合、ビューが余分に追加するためです。
詳細については、残り火ビューガイドを参照してください。

于 2013-02-18T18:46:11.430 に答える