2

ビューを表示する前に、アプリのすべてのコレクションを作成する必要があります。ただし、問題は、すべてが入力されていることを確認する前に、ページを数回更新する必要がある場合があることです。

たとえば、データベースに部屋があることがわかっている場合でも、部屋のコレクションが完全に空になることがあります。この場合、サーバーの応答は空です。

以下は、簡素化された実装です。

(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 サービスにあるのかはわかりません。この断続的な問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

参照する場合、これを処理する方法はいくつかあります - Collection fetch

最初の方法はすでにシドニーによって言及されており、それはコールバックを使用fetchしていsuccessます。

2 番目の方法は を使用する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();
}

これは、物事を行うための好ましい「バックボーンの方法」ではないと言わざるを得ません。Backbone Patternsを読むことを強くお勧めします

于 2013-06-05T23:07:32.217 に答える