使用带有下划线循环的回调函数.js骨干.js项目不起作用
Using callback function with loop in underscore.js of backbone.js project not working
我正在用underscore.js
和require.js
开发backbone.js
项目。
我创建了一个javascript回调函数,以便使用ajax
从Web服务获取数据:
this.getProCallBack = function(type,callback){
var result = "";
$.ajax({
url: url, //rest url
type:"GET",
dataType:"json",
contentType: "application/json",
success: function(response){
result = callback(response);
}
});
}
这是骨干网的观点.js
define(["jquery" ,
"underscore" ,
"backbone",
"text!templates/Layout/ba.html",
"promo"
],function($, _, Backbone, BannerTem, Promo){
var BaView = Backbone.View.extend({
initialize : function(){
},
render: function(options){
var _banner = _.template(BannerTem);
$(this.el).html(_banner({type : this.options.type}));
return this;
}
});
return BannerView;
});
我正在使用text.js
来调用带有html文件的下划线模板。
这是一个模板:ba.html
<div id="ei-slider" class="ei-slider">
<ul class="ei-slider-large">
<%
var home = new Promo();
home.getProCallBack(type,function(result){
_.each(result, function(slideimg){
switch(slideimg.ItemCount){
case 0 :
alert(slideimg.PromotionImage);
%>
<li>
<a href="#detail/<%=slideimg.ItemList[0].UID%>">
<img src="slideimg.PromotionImage%>" />
</a>
</li>
<%
break;
default:
%>
<li>
<a href="#detail" style="float: left;">
<img src="slideimg.PromotionImage%>" />
</a>
</li>
<%
}
%>
</ul>
</div>
问题:alert()
正在case
块中工作,但<img>
没有显示在DOM
中。
我不确定是因为_.each()
callback
功能不起作用或可能导致此问题的原因。
任何可能造成这种情况的原因。谢谢。
你的方法有点倒退。由于计时问题,AJAX 调用在模板中效果不佳。
您应该将逻辑从内到外,以便 AJAX 调用在您的视图中,并在$.ajax
成功回调中处理模板。在您看来是这样的:
render: function(options){
var _banner = _.template(BannerTem);
var home = new Promo();
home.getProCallBack(this.options.type, function(result) {
this.$el.html(_banner({result result}));
}.bind(this));
return this;
}
然后模板将更像这样:
<div id="ei-slider" class="ei-slider">
<ul class="ei-slider-large">
<% _.each(result, function(slideimg) {
if(slideimg.ItemCount == 0) { %>
<li>
<a href="#detail/<%=slideimg.ItemList[0].UID%>">
<img src="<%= slideimg.PromotionImage%>" />
</a>
</li>
<% } else { %>
<li>
<a href="#detail" style="float: left;">
<img src="<%= slideimg.PromotionImage%>" />
</a>
</li>
<% }
}) %>
</ul>
</div>
我在此过程中将switch
切换到if/else
,switch
很难在下划线模板中正确处理,所以我倾向于不打扰。
相关文章:
- 当js函数's已执行
- 调用php数组中的JS函数
- 为JS函数添加延迟
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用JS函数来使用另一个函数的语法?node.js
- 将JS函数传递给Emscripten生成的代码
- 是否可以在使用headerphp函数后自动调用JS函数
- 如何在.js函数中检索来自其他模板的表单的目标值
- 简单的JS函数.需要对变量进行澄清
- 无法识别从php创建的Js函数
- 如何将对象传递给这个js函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 将重定向URL链接添加到JS函数
- 从PHP调用JS函数不起作用
- js函数堆栈传入变量,.hide()不起作用
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如何让JS函数自行执行
- 使用默认js函数的javascript中的日期的第二天
- 如何从页面中的jquery调用angular js函数控制器
- 从.js文件调用html中的js函数