如何在famo.us中为曲面加载动态内容(ajax)



我的问题如下:

我有许多与一个唯一url相关联的曲面。当我移动到一个特定的表面时,url必须实时(ajax)触发,并且响应应该设置为表面的内容。

当我尝试执行上述操作时,它实际上会在应用程序初始化时预先加载所有url及其内容。这减缓了整个过程,不是我想要的。我只想在用户处于活动状态时加载内容。

var ajaxContent = "";
$.ajax({
  url: 'ajax/article.php?url='+escape(this.options.url),
  async: false,
  success: function(data) {
    ajaxContent = data;
  }
});
this.pageSurface = new Surface({
    size: [undefined, undefined],
    content: ajaxContent,
    classes: ["page"],
    properties: {
        backgroundColor: '#111111',
        fontSize: '16px'
    }
});

上面的代码是在一个曲面循环中。

我对Ajax没有任何经验,但据我所知,根据您的描述,基本上是异步请求数据。。。所以我会根据这个假设来回答。

首先,我会稍微改变一下操作顺序!

for (var i = 0; i < 10; i++) {
    var surface = new Surface({
        content : '',
        classes : ['page'],
        properties : {
            backgroundColor : '#111111',
            fontSize : '16px'
        }
    });
    var ajax_request = {
        url : 'ajax/article.php?url=' + escape(this.options.url),
        async : true,
        success : function(data) {
            //possibly validate the obtained data further
            this.setContent(data);
        }.bind(surface)
    }
    var load = function load() {
        this.removeListener('mouseover', load);
        $.ajax(ajax_request);
    }.bind(surface);
    surface.on('mouseover', load);
}

我将曲面绑定到该曲面特定的所有函数,否则循环中可能会发生奇怪的事情。这将确保只有一个曲面加载内容,并且该内容仅分配给同一曲面!

最后,你应该注意你的单引号和双引号,因为你同时使用它们。Famo.us(该公司)更喜欢单引号,但如果你使用双引号也没关系。这只是一个更好的练习,至少要坚持两者中的任何一个。

最新更新