2013-01-08 48 views
0

我看到有一種語法有一個輔助對模板是私有的,但是有相反的語法嗎?我有一個使用特定模板的標籤,該模板(邏輯上講)僅用於標籤。如何使一個模板私有自定義標記

$.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

這裏有一些變種:

$.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>") 
    } 
}); 

在每種情況下,模板將只被編譯一次,將是私有的。

第一種情況和第二種情況類似,但第二種情況允許您以編程方式控制渲染。彙編是在編譯標記時完成的。

第三個讓你有幾個私人模板...

+0

優秀。非常感謝你 – pedz