// Template Helper
window.template = function (id) {
return _.template($('#' + id).html());
};
// Template Helper in view.render
this.$el.html( this.template(this.model.toJSON()) );
// This Template Call in View
template: template('response-form')
// This My If Else Construction in View Initialize
if (this.model.attributes.status === true) {
here i want set template id to response-auth
} else {
here i want set template id to response-form
}
我不知道,我怎样才能动态改变模板调用的价值?有人可以帮助我吗?
答案 0 :(得分:2)
您可以随时在视图中更改this.template
。因此,您可以查看视图initialize
中的状态:
initialize: function() {
if(this.model.get('status'))
this.template = template('response-auth');
else
this.template = template('response-form');
}
或者您可以在render
内做出决定:
render: function() {
var tmpl = null;
if(this.model.get('status'))
tmpl = template('response-auth');
else
tmpl = template('response-form');
// your current rendering code goes here but uses
// tmpl instead of this.template
}
您采取的方法取决于您是否期望状态发生变化。
当然,您可以在构建视图时编译它们:
template_auth: template('response-auth'),
template_form: template('response-form'),
initialize: function() {
// Set this.template to this.template_auth or this.template_form...
},
render: function() {
// Or pick this.template_auth or this.template_form in here if
// that makes sense...
}
如果您希望使用这两个模板,那么编译它们都是有意义的,否则我会做出决定,直到需要进行(可能在render
)。
答案 1 :(得分:0)
@mu太短:我们无法通过任何方式传递内部动态数据
template('response-auth');
假设我有超过50个模板,那么if else语句就不能放置。
$(`#channel-view-${targetPlatformId}`).html(_.template(templates.manage_store_form_template_Ebay)({
$(`#channel-view-${targetPlatformId}`).html(_.template(templates.manage_store_form_template_shopify)({
上面一行有一个区别,那就是频道名称,我可以通过什么方式在 _。template()
内部传递动态数据