在从服务器接收数据之前,如何防止方法触发?

时间:2012-08-31 22:30:17

标签: javascript html backbone.js

所以我使用backbonejs根据我从谷歌数据存储区收到的数据生成一个html页面。我遇到的问题是在收到数据之前尝试阻止我的render方法返回。

一个小问题:是否可以打开一个window.open()传入html?

3 个答案:

答案 0 :(得分:0)

不是使用html调用window.open()(基本上是传递一些数据),而是可以通过window.open()打开窗口,然后在该窗口中调用预定义的函数并传递数据(或者你的HTML)到那个功能,并让它完成你的工作:)

答案 1 :(得分:0)

为什么要打架?在Google数据发布的区域使用微调器加载您的页面。谷歌数据终于回来后,用该数据更新骨干并再次渲染;这次使用的是数据而不是微调器。

如果你真的想要对抗它,你可以使jQuery ajax调用与async选项同步运行。将async: false添加到要传递给ajax调用的选项中。

jQuery.ajax() Documentation

答案 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