如何将模板设为私有自定义标记

时间:2013-01-08 16:10:36

标签: jsrender

我看到有一种语法可以让一个私有的模板帮助器,但是有相反的语法吗?我有一个使用特定模板的标签,该模板(逻辑上讲)仅由标​​签使用。

$.templates({
  link_template: "<a href='{{:link}}' class='{{:klass}}'>{{:text}}</a>"
});

$.views.tags({
link_to: function (link, klass, text) {
    return $.render.link_template({link: link, klass: klass, text: text});
}
});

我认为模板只是一个字符串,但随后会在每次调用时编译。我希望得到编译模板的好处(基本上,我现在所拥有的 - 我只是想以某种方式隐藏标签内的模板)。

1 个答案:

答案 0 :(得分:1)

以下是一些变体:

$.views.tags({
    link_to1: {
        template: "<a href='{{:link}}' class='{{:klass}}'>{{:text}}</a>"
    },
    link_to2: {
        render: function (link, klass, text) {
            return this.template.render({link: link, klass: klass, text: text});
        },
        template: "<a href='{{:link}}' class='{{:klass}}'>{{:text}}</a>"
    },
    link_to3: {
        render: function (link, klass, text) {
            return this.myTemplate.render({link: link, klass: klass, text: text});
        },
        myTemplate: $.templates("<a href='{{:link}}' class='{{:klass}}'>{{:text}}</a>")
    }
});

在每种情况下,模板只会被编译一次,并且将是私有的。

第一种情况和第二种情况类似,但第二种情况允许您以编程方式控制渲染。编译标记时完成编译。

第三个让你拥有几个私人模板......