动态更改Marionette ItemView模板

时间:2014-06-15 09:52:52

标签: javascript html backbone.js marionette

我在ItemView中有Marionette

App.View.MovieListItem = Marionette.ItemView.extend({
tagName: 'li',
className: 'movie',
model: App.Model.Movie,
id: function() {
    return 'movie-'+this.model.get('imdb')
},

initialize: function () {
    this.render();
},

template: _.template('<a href="javascript:;">'+
        '<i class="fa fa-eye fa-3"></i>'+
        '<span class="cover"></span>'+
        '<strong><%= title %></strong>'+
        '<small><%- year %></small>'+
        '<small2>Cached</small2>'+
    '</a>'),
});

我想知道是否可以动态创建模板? 因为我想要一些时间(基于检查某些内容的方法)删除small2标记。

1 个答案:

答案 0 :(得分:9)

Marionette has a function名为getTemplate,可用于返回动态模板。

示例:

App.View.MovieListItem = Marionette.ItemView.extend({
    tagName: 'li',
    className: 'movie',
    model: App.Model.Movie,
    id: function() {
        return 'movie-'+this.model.get('imdb')
    },

    initialize: function () {
        this.render();
    },

    getTemplate: function(){
        if(condition){
            return _.template(/* HTML STRING */);
        }else{
            return _.template(/* ANOTHER HTML STRING */);
        }
    }
});