1

データがフェッチされるたびにロードルートをトリガーする機会はありますか?

RM.Public.ItemsController = RM.ApplicationController.extend({
...snip...
  pageContent: ->
    @set 'newItems',
      RM.Blurb.find({search_conditions:@get('search_conditions')})
})

モデルがデータを受信するたびに LoadingRoute がトリガーされます。

RM.Public.ItemsRoute = Ember.Route.extend(
...snip...
  setupController:(controller, model) ->
    controller = @controllerFor('public/items')
    controller.set("model", model)

  model: ->
    RM.Item.find({}).then( (modelData) ->
      modelData
    )
)

ただし、この場合、ロードルートは一度だけトリガーされます。

LoadingRoute の動作例を次に示します http://jsbin.com/ANERoRi/1/edit

4

1 に答える 1

0

読み込みルートは、Ember があるルートから別のルートに遷移し、Ember がモデル フックから返されたモデルを解決するのを待っている場合にのみトリガーされます。そうは言っても、最も簡単なことは、ドキュメントの ajax トリガーにフックし、手動で html をポップアップすることです。ここにミニ ライブラリがAjaxNotice.initializeGlobalEvents();あります。1 回呼び出して開始します (おそらくアプリケーション ルート、またはアプリケーション ビューの didInsertElement で)。

var AjaxNotice = {

  initializeGlobalEvents: function () {
    $(document).ajaxStart(function () {
      AjaxNotice.addAjaxNotice();
    });

    $(document).ajaxStop(function () {
      AjaxNotice.removeAjaxNotice();
    });
  },

  addAjaxNotice: function () {
    AjaxNotice.slideInNotice();
  },

  removeAjaxNotice: function () {
    AjaxNotice.slideOutNotice();
  },

  slideInNotice: function () {
    $('body').append(AjaxNotice.getHtml());
  },

  slideOutNotice: function () {
   $("#ajax_notice").remove();
  },

  getHtml: function () {
    return '<div id="ajax_notice" class="ajax_spinner"> Working...</div>'
  }
}
于 2013-10-20T15:27:09.947 に答える