【问题标题】:Use "if" in Backbone/Underscore template, how?在 Backbone/Underscore 模板中使用“if”,如何?
【发布时间】:2015-04-23 20:24:32
【问题描述】:

我有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 时,我用media 调用Popup/Media 模板:

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

对于更改图像,我有类似的Backbone.View,在.svs-upload-image 上调用相同的Popup/Media 点击:

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>
<% } %>

我需要粘贴什么而不是“代码需要在这里”?非常感谢大家!

【问题讨论】:

    标签: javascript backbone.js underscore.js


    【解决方案1】:

    据我了解您的问题,您不是要求复制类似的内容 this,因为您希望为您的代码量身定制答案,而不仅仅是对语法有疑问。

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

    1. 让您的视图将明确标识原始类型的变量传递给数据模型,然后在模板中测试该变量。
    2. 制作两个不同的模板。

    我推荐选项 1 用于 DRY 目的。我希望这能回答你的问题,但很难给你一个好的答案,因为你的问题不是很清楚。

    【讨论】:

    • 您想知道如何在模板渲染级别区分背景视图和图像视图 - 是的!你说得对,谢谢你的答案,我会考虑的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多