jsrender 中的自定义 If 标签
Custom If tag in jsrender
我尝试创建一个自定义 if 标签 contains
来检查数组中的给定值。
jQuery.views.tags({
contains:{
baseTag: "if", //no I18n
init: function(){
var valueArr = this.tagCtx.args[0];
var findValue = this.tagCtx.args[1];
return _.contains(valueArr, findValue);
}
},
});
但它并没有像我预期的那样工作。需要帮助。
提前致谢。
您正在覆盖 init 方法。这是您需要覆盖的渲染方法。
见http://www.jsviews.com/#tags and http://www.jsviews.com/#samples/jsr/tags/extend-for or http://www.jsviews.com/#samples/tag-controls/range
jQuery.views.tags({
contains:{
baseTag: "if",
render: function(valueArr, findValue) {
if (valueArr && findValue) {
// Call the base render method of the {{if}} tag,with the 'contains' result
return this.base(_.contains(valueArr, findValue));
}
return this.base(); // {{else}} tag
},
// If using JsViews data-linking - need to override onUpdate too
onUpdate: function(ev, eventArgs, tagCtxs) {
return true;
}
}
});
用法:
{{contains array1 item1}}
...
{{else array2 item2}}
...
{{/contains}}
(或 {^{contains ...}}
如果使用 JsViews 数据链接...)
我尝试创建一个自定义 if 标签 contains
来检查数组中的给定值。
jQuery.views.tags({
contains:{
baseTag: "if", //no I18n
init: function(){
var valueArr = this.tagCtx.args[0];
var findValue = this.tagCtx.args[1];
return _.contains(valueArr, findValue);
}
},
});
但它并没有像我预期的那样工作。需要帮助。
提前致谢。
您正在覆盖 init 方法。这是您需要覆盖的渲染方法。
见http://www.jsviews.com/#tags and http://www.jsviews.com/#samples/jsr/tags/extend-for or http://www.jsviews.com/#samples/tag-controls/range
jQuery.views.tags({
contains:{
baseTag: "if",
render: function(valueArr, findValue) {
if (valueArr && findValue) {
// Call the base render method of the {{if}} tag,with the 'contains' result
return this.base(_.contains(valueArr, findValue));
}
return this.base(); // {{else}} tag
},
// If using JsViews data-linking - need to override onUpdate too
onUpdate: function(ev, eventArgs, tagCtxs) {
return true;
}
}
});
用法:
{{contains array1 item1}}
...
{{else array2 item2}}
...
{{/contains}}
(或 {^{contains ...}}
如果使用 JsViews 数据链接...)