我尝试创建一个自定义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);
}
},
});
但它没有像我预期的那样奏效。需要帮助。
提前致谢。
答案 0 :(得分:1)
您正在覆盖init方法。这是你需要覆盖的渲染方法。
请参阅http://www.jsviews.com/#tags和http://www.jsviews.com/#samples/jsr/tags/extend-for或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数据链接......)