1

每当获取数据时,是否有机会触发加载路线?

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

在 ember 中,只要模型接收到数据,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();一次来启动它(可能在您的应用程序路由中,或者您的应用程序视图的 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 回答