web-dev-qa-db-ja.com

バックボーンを使用してアンダースコアテンプレート内の関数を呼び出す

私がやろうとしていることは、今の私の人生を本当に単純化するでしょう。

どうやってやるの :

これはアプリファイルでの私の見解です

    window.ArtView = Backbone.View.extend({
        template:_.template($('#art').html()),
        render:function (eventName) {
            var output="blablbla";
            $(this.el).html(this.template({"output":output}));
            return this;
        }
    });
    ...
    // function that I would like to call
    function callFunction(){
        console.log('it works!');
    }

Index.htmlのテンプレート

<script type="text/tempate" id="art">
        <div data-role="header" class="header" data-position="fixed">
            <a href="#" data-icon="back" class="back ui-btn-left">Back</a>
        </div>
        <div data-role="content" class="content">
            callFunction();
            <% console.log(output) %>
        </div>
</script>

テンプレート内などでcallFunction()を呼び出すにはどうすればよいですか?

何か案が ?

ありがとう!

14
user2686922

テンプレートのオブジェクトに関数があれば、テンプレート内で関数を呼び出すことができると思います。

render:function (eventName) {
    var output="blablbla";
    var data = _.extend({"output":output}, callFunction);
    $(this.el).html(this.template(data));
    return this;
}

次に、テンプレートで:

<%= callFunction() %>
16
Vic

これは私がそれをした方法です、それはうまくいきます。

template: _.template(templateText , {
            imports : {
                check :function (val){
                    // blah blah
                    }
                }
            }
        }),

次に、HTMLテンプレートで

<%= check('value') %>
6
Yazan Rawashdeh

それは間違っている。テンプレートを文字列、htmlマークアップと考えてください。それを取得し、その一部を実際のデータに置き換えます。 DOM操作を行いたい場合は、後で行う必要があります。 callFunctionで何をしたいのかをお知らせください。そのロジックに適した場所をご案内します。

0
Krasimir