在 Backbone/Underscore 模板中使用 "if",如何?
Use "if" in Backbone/Underscore template, how?
我已经 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
调用相同 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
背景和图片模板中显示不同的 header 标题,例如:
如果背景:
<% 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>
<% } %>
我需要粘贴什么而不是'代码需要在这里'?非常感谢大家!
据我了解你的问题,你并不是要复制类似
this,因为您希望根据您的代码定制答案,而不仅仅是语法问题。
你的问题不是很清楚,但我假设基本问题是你的数据模型中没有任何东西可以区分这两种视图,你想知道如何区分背景视图和模板渲染级别的图像视图。您有两个选择:
- 让您的视图将明确标识原始类型的变量传递给数据模型,然后在模板中测试该变量。
- 制作两个不同的模板。
出于 DRY 目的,我推荐选项 1。我希望这能回答你的问题,但很难给你一个好的答案,因为你的问题不是很清楚。
我已经 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
调用相同 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
背景和图片模板中显示不同的 header 标题,例如:
如果背景:
<% 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>
<% } %>
我需要粘贴什么而不是'代码需要在这里'?非常感谢大家!
据我了解你的问题,你并不是要复制类似 this,因为您希望根据您的代码定制答案,而不仅仅是语法问题。
你的问题不是很清楚,但我假设基本问题是你的数据模型中没有任何东西可以区分这两种视图,你想知道如何区分背景视图和模板渲染级别的图像视图。您有两个选择:
- 让您的视图将明确标识原始类型的变量传递给数据模型,然后在模板中测试该变量。
- 制作两个不同的模板。
出于 DRY 目的,我推荐选项 1。我希望这能回答你的问题,但很难给你一个好的答案,因为你的问题不是很清楚。