簡體   English   中英

Ember:如何將動作綁定到用JS生成的代碼

[英]Ember: How to bind action to code generated with JS

我有一個簡單的視圖,它根據給定的items數組(簡化的代碼)呈現一組圖像,因為我需要收集一些其他數據來“構建”所需的類名,所以使用它:

App.MyView = Ember.View.extend({
    buildTemplate: function () {
        var itemz = this.get('items');
        var classname = 'classNameDependingOnSomeCalculations...';
        var out = '<div>';
        $.each(itemz, function (index, obj) {
            out += '<img {{action myActionHere}} src="' + obj.href + '" alt="" class="'+classname+'"/>';
        });
        out += '</div>';
        return out;
    }.property('view'),
    defaultTemplate: Ember.Handlebars.compile(
        "<div>{{{view.buildTemplate}}}</div>"
    )
});

在模板中,我將其用作

{{#each myObj in myCollection}}
    {{view App.MyView  itemsBinding="myObj.items" otherBinding="otherProps" }}
{{/view}}

不幸的是,這種方式Ember而不是綁定動作將{{action myActionHere}}直接放入代碼中...

構建動態模板時如何綁定動作?

我正在使用Ember 1.1.2

PS或者也許我應該使用其他方法來構建此視圖?

正如您在此處所介紹的那樣,有一種解決方法可以使視圖起作用。但是,實際上,這並非余燼方法。 如果出於某種原因您需要這種方法,我將為此提供一個答案,但我將致力於解決潛在的問題。

與其像此處所示那樣執行操作,不如直接在JSP中使用類似於以下代碼的代碼:

{{#each myObj in myCollection}}
    <div>
    {{#each item in myObj.items}}
        <img {{action myActionHere}} src={{item.href}} alt='' class={{classNameFunction}}/>
    {{/each}}
    </div>
{{/each}}

如果你的理由想這樣做,因為一個觀點是,這樣你可以在不重寫代碼重用此功能,看看泛音這是專門為這個目的而設計的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM