繁体   English   中英

我如何确定所有集合都已填充?

[英]How can I be sure all collections have been populated?

在呈现任何视图之前,我需要填充我所有应用程序的集合。 但是问题是,有时我必须刷新页面几次,然后才能看到所有页面都已填充。

例如,当我知道数据库中有房间时,有时Rooms集合完全为空。 在这种情况下,服务器响应为空。

这是一个简化的实现:

(function() {
    window.rooms = new App.Collections.Rooms();

    $.when(rooms.fetch()).done(function() {
        window.router = new App.Router;
        Backbone.history.start();
    });
}());

这是从服务器返回房间的代码:

public function get_index() {
    $rooms = Room::where('id_hostel', '=', Session::get('id_hostel'))->get();
    $response = array();

    foreach($rooms as $room) {
        $response[] = $room->attributes;
    }

    return json_encode($response);
}

实际上,我不知道错误是在客户端还是在我编写的Laravel RESTful服务中。 如何解决此间歇性问题?

如果您引用的话,有几种方法可以处理- 集合获取

Sidney已经提到了第一种方法,它使用了fetchsuccess回调。

第二种方法是使用events ,在我看来,这是更好的方法,因为您可以更轻松地将代码解耦并具有更好的可读性。

var rooms = window.rooms = new App.Collections.Rooms();
    rooms.fetch();
    ...
    rooms.on('sync', someFunction);

要么

var rooms = window.rooms = new App.Collections.Rooms();
    rooms.fetch({reset: true});
    ...
    rooms.on('reset', someFunction);


someFunction () {
    window.router = new App.Router;
    Backbone.history.start();
}

我必须说这不是首选的“骨干方式”。 我强烈建议您阅读骨干模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM