下划线模板的自定义解析
Custom Parsing of Underscore Templates
我写了一个函数,它接受一个字符串,以及来自 backbone 模型的 returns 信息。不过,它不是直接从模型中提取属性,而是使用属性来形成更复杂的数据 - 例如,日期解析,或获取用于特定类型对象的正确图标 -
// returns a parsed date modified with format MM/DD/YYYY
parseString("dateProperty:MM/DD/YYYY:dateModified");
// returns the HTML needed to display an icon based on the model type.
parseString("icon:type");
现在我正在从模板本身内部调用我的解析函数 -
<div>Date modified <%= parseString("dateProperty:MM/DD/YYYY:" + dateModified) %></div>
但是 我希望能够将我的解析函数自动应用于每个值,而不是仅仅将我的 Backbone 模型推入并直接应用属性。
基本上,我希望能够使用我的模板执行此操作 -
<div>Date modified <%= dateProperty:MM/DD/YYYY:dateModified %></div>
并将 dateProperty:MM/DD/YYYY:dateModified
发送到 parseString
。
这是一个相当大的 Backbone 设置的一部分,parseString
函数在我用来构建模型和集合的整个 JSON 中使用;如果模板中字符串的行为相同,我会喜欢它。
如果你真的想要那种语法,我认为你最好的选择是 "copy" 下划线以外的 _.template
代码,并在其中添加对自定义语法的支持。
如果您有更适合 JavaScript 的语法,例如函数调用
<%= z$("dateProperty:MM/DD/YYYY:dateModified") %>
还有一些其他选项(全局、混合在模板 with
语句中的对象等)。就目前而言,您几乎必须自己实施它。
或者您可以采用更有特色的模板语言。
我写了一个函数,它接受一个字符串,以及来自 backbone 模型的 returns 信息。不过,它不是直接从模型中提取属性,而是使用属性来形成更复杂的数据 - 例如,日期解析,或获取用于特定类型对象的正确图标 -
// returns a parsed date modified with format MM/DD/YYYY
parseString("dateProperty:MM/DD/YYYY:dateModified");
// returns the HTML needed to display an icon based on the model type.
parseString("icon:type");
现在我正在从模板本身内部调用我的解析函数 -
<div>Date modified <%= parseString("dateProperty:MM/DD/YYYY:" + dateModified) %></div>
但是 我希望能够将我的解析函数自动应用于每个值,而不是仅仅将我的 Backbone 模型推入并直接应用属性。
基本上,我希望能够使用我的模板执行此操作 -
<div>Date modified <%= dateProperty:MM/DD/YYYY:dateModified %></div>
并将 dateProperty:MM/DD/YYYY:dateModified
发送到 parseString
。
这是一个相当大的 Backbone 设置的一部分,parseString
函数在我用来构建模型和集合的整个 JSON 中使用;如果模板中字符串的行为相同,我会喜欢它。
如果你真的想要那种语法,我认为你最好的选择是 "copy" 下划线以外的 _.template
代码,并在其中添加对自定义语法的支持。
如果您有更适合 JavaScript 的语法,例如函数调用
<%= z$("dateProperty:MM/DD/YYYY:dateModified") %>
还有一些其他选项(全局、混合在模板 with
语句中的对象等)。就目前而言,您几乎必须自己实施它。
或者您可以采用更有特色的模板语言。