Я разрабатываю проект backbone.js
с underscore.js
и require.js
.Использование функции обратного вызова с контуром в underscore.js проекта backbone.js не работает
Я создал яваскрипта функцию обратного вызова для получения данных из веб-службы с помощью ajax
:
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);
}
});
}
Вот Посмотреть из Backbone.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
или что может быть вызвана этой проблемой.
Любая идея, что может быть причиной этого. Благодарю.
Но что, если у меня есть несколько функций обратного вызова для использования в html-шаблоне? Как передать более одного результата, вызвав функцию обратного вызова из представления в шаблон? – Nothing
Вы, вероятно, будете использовать несколько вызовов '$ .ajax' и обещание вызвать обратный вызов, когда все будет сделано. –
Я попробовал: '$ .when ( \t home.getProCallBack (this.options.type, функция (_result) { \t \t this.topDep = _result; \t}) ) .then (функция() { \t console.log (this.topDep); \t это. $ el.html (_banner ({result: this.topDep})); } .bind (this)); 'but' this.topDep' не определено. – Nothing