0
// 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
}

我不知道,如何动态更改模板调用的值?有人可以帮助我吗?

4

2 回答 2

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)。

于 2013-04-11T16:57:10.163 回答
0

@mu 太短:我们不能通过任何方式在内部传递动态数据

模板('响应验证');

假设我有超过 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()中传递动态数据

于 2019-07-26T08:34:54.483 回答