14

只是我尝试做的一件事会真正简化我现在的生活。

我怎样才能做到这一点 :

这是我在应用文件中的视图

    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() ?

任何想法 ?

谢谢 !

4

3 回答 3

16

我相信只要模板的对象具有函数,您就可以在模板中调用函数。

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

然后在您的模板中:

<%= callFunction() %>
于 2013-09-23T14:37:27.997 回答
6

我就是这样做的,效果很好。

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

然后在你的 html 模板中

<%= check('value') %>
于 2016-01-21T12:27:30.767 回答
0

那是错误的。将模板视为字符串、html 标记。你得到它并用实际数据替换它的某些部分。如果您想进行一些 DOM 操作,则应在此之后进行。让我们知道您想在 callFunction 中做什么,我们可能会引导您找到该逻辑的正确位置。

于 2013-09-23T14:19:37.870 回答