所以我使用backbonejs根据我从谷歌数据存储接收到的数据生成一个html页面。我遇到的问题是试图在接收到数据之前阻止我的渲染方法返回。
一个小问题:是否可以打开传入 html 的 window.open() ?
所以我使用backbonejs根据我从谷歌数据存储接收到的数据生成一个html页面。我遇到的问题是试图在接收到数据之前阻止我的渲染方法返回。
一个小问题:是否可以打开传入 html 的 window.open() ?
在您的收藏中:
var c = Backbone.Collection.extend({
url: '/path/to/api',
initialize: function() {
this.deferred = this.fetch();
}
});
在您看来:
var v = Backbone.View.extend({
render: function() {
c.deferred.done(function() {
/* Render your View here */
});
}
});
由于collection.fetch()
返回了 jqXHR,这成为可能。更多解释在这里。
您可以通过 window.open() 打开窗口,然后在该窗口中调用预定义的函数并传递数据(或 HTML ) 到那个功能,让它完成你的工作:)
为什么要打呢?在谷歌数据将去的区域用微调器加载你的页面。当谷歌数据最终返回时,用该数据更新主干并再次渲染;这次使用数据而不是微调器。
如果您真的想与之抗争,您可以使 jQuery ajax 调用与该async
选项同步运行。添加async: false
到您传递给 ajax 调用的选项。