Вызов функции внутри шаблона подчеркивания с помощью backbone

просто то, что я пытаюсь сделать, что действительно упростило бы мою жизнь прямо сейчас.

Как я могу сделать это :

Это мой взгляд в файле приложения

    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!');
    }

шаблон в индекс.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 () внутри моего шаблона или что-то подобное ?

есть идеи ?

спасибо !

3 ответов


Я верю, что вы можете вызывать функции в шаблоне как объект для шаблона функции.

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

тогда в вашем шаблоне:

<%= callFunction() %>

вот как я это сделал, он работает нормально.

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

затем в HTML-шаблоне

<%= check('value') %>

Это неправильно. Подумайте о шаблоне как о строке, разметке html. Вы получаете его и заменяете некоторые его части фактическими данными. Если вы хотите сделать некоторые манипуляции DOM, они должны быть сделаны после этого. Сообщите нам, что вы хотите сделать в callFunction, и мы можем направить вас в нужное место для этой логики.