所以我使用backbonejs根据我从谷歌数据存储区收到的数据生成一个html页面。我遇到的问题是在收到数据之前尝试阻止我的render方法返回。
一个小问题:是否可以打开一个window.open()传入html?
答案 0 :(得分:0)
不是使用html调用window.open()(基本上是传递一些数据),而是可以通过window.open()打开窗口,然后在该窗口中调用预定义的函数并传递数据(或者你的HTML)到那个功能,并让它完成你的工作:)
答案 1 :(得分:0)
为什么要打架?在Google数据发布的区域使用微调器加载您的页面。谷歌数据终于回来后,用该数据更新骨干并再次渲染;这次使用的是数据而不是微调器。
如果你真的想要对抗它,你可以使jQuery ajax调用与async
选项同步运行。将async: false
添加到要传递给ajax调用的选项中。
答案 2 :(得分:0)
在您的收藏中:
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,因此可以实现。更多解释here。