是否有机会在获取数据时触发加载路由?
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
答案 0 :(得分: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>'
}
}