簡體   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