好吧,所以我有一个使用主干广告MVC框架的node js应用程序,它在启动时运行appView.js,以便获取我的应用程序所需的一些信息。
我遇到了这个问题,我需要向服务器请求一些信息,这些信息每次最终用户在drupal面板上进行更改时都会更改。
到目前为止,我每次用户进入促销页面时都会执行我的$ .ajax请求,这使浏览器花时间进行请求,处理信息并能够使用恢复的JSON构建模板。
我需要能够在appView.js文件上发出请求并保留结果,直到用户进入需要JSON数据的促销页面,然后我才能构建该页面。
promotionsView.js的一部分
render: function() {
var self = this;
EventsManager.trigger("showLoading");
$.when(self.translatePromotions()).done(function(data){
self.promotions = data.promotions;
var promotions = self.promotions;
if(self.promotions == undefined)
var promotions = {};
if (promotions.length > 0) {
var data = {
promos: promotions,
error: false,
max_item: 3
};
self.$el.html(self.template(data));
if (data.promos.length <= data.max_item) {
self.initRoyalSlider(RoyalSliderOptions.arrow);
} else {
self.initRoyalSlider(RoyalSliderOptions.bulletsArrow);
}
} else {
self.template = _.template(NotAvailableTemplate);
self.$el.html(self.template());
self.$el
.find(".promos-events-title")
.addClass("promos-title")
.attr("data-translate-id", "promotions-title");
}
self.bindImageError();
EventsManager.trigger("hideLoading");
});
},
translatePromotions: function() {
return $.ajax({
type: "get",
url: MainConf.BASE_DOMAIN_NAME + MainConf.BASE_PROXY + MainConf.BASE_URL + "/" + this.currentLang.toLowerCase() + "/rest/promotions.json",
});
}
因此,我再次需要能够在appView.js文件中提出请求,并且能够在促销页面上使用结果,而不必等待请求完成。