在Backbone / Underscore模板中使用“if”,怎么样?

时间:2015-02-22 13:03:02

标签: javascript backbone.js underscore.js

我已Backbone.View更改了$el的背景:

var Background = Backbone.View.extend({
    className: 'svs-widget svs-widget-animate',
    events:{
        'click .svs-upload-background': 'media'
    },
    initialize: function(){

    },
    render: function(){
        this.$el.append(_.template(_background).apply(this.options));
        return this.$el;
    },
    media: function(){
        var me = this;   

        require(['View/Popup/Media'], function(_Media){
            $.ajax({
                url: '/svs-ajax.php',
                type: 'post',
                data: {
                    'action':                   'change_bg'
                },

                success: function(data){
                    var media   = new _Media({model: data, popup: popup, target: me.options.background});
                    var popup   = new Popup({content: media.render()});
                }
            });
        });
    }
});

点击.svs-upload-background时,我使用Popup/Media调用media模板:

<% if(this.data.length > 0){ %>
 <div class="MediaList">
    <img/>
 </div>
<% } %>

要更改图片,我已经有Backbone.View类似Popup/Media点击.svs-upload-image点击var Image = Backbone.View.extend({ className: 'svs-widget svs-widget-animate', events:{ 'click .svs-upload-image': 'media' }, initialize: function(){ }, render: function(){ this.$el.append(_.template(_image).apply(this.options)); return this.$el; }, media: function(){ var me = this; require(['View/Popup/Media'], function(_Media){ $.ajax({ url: '/svs-ajax.php', type: 'post', data: { 'action': 'change_image' }, success: function(data){ var media = new _Media({model: data, popup: popup, target: me.options.image}); var popup = new Popup({content: media.render()}); } }); }); } });

Popup/Media

问题在于:我需要在<% if(' **code needs to be here** '){%> <div class="background_header">Changing background</div> <% } %> 模板中为背景和图片显示不同的标题标题,例如:

如果背景:

<% if(' **code needs to be here** '){%>
   <div class="image_header">Changing image</div>
<% } %>

如果图片:

{{1}}

我需要粘贴代替&#39; 代码需要在这里&#39; ?非常感谢大家!

1 个答案:

答案 0 :(得分:2)

据我了解你的问题,你并没有要求复制类似的东西 this,因为您希望定制代码的答案,而不仅仅是对语法有疑问。

您的问题不是很清楚,但我假设基本问题是数据模型中没有任何内容区分这两种视图,并且您想知道如何区分背景视图和模板渲染级别的图像视图。您有两种选择:

  1. 让您的视图将显式标识原始类型的变量传递给数据模型,然后在模板中测试该变量。
  2. 制作两个不同的模板。
  3. 我建议DRY用于选项1。我希望这能回答你的问题,但很难给你一个好的答案,因为你的问题不是很明确。