我正在将Ember与Ember Data和LocalStorage Adapter一起使用,我正在寻找一种方法来强制Ember从LocalStorage重新加载数据并相应地更新UI。
然而,我不知道如何从Ember外部手动强制重新加载。基本上我正在寻找这样的东西:
function reloadAssets() {
App.ApplicationAdapter.init(); // Cannot be called
}
我最初的想法是只调用LS应用程序适配器的init()方法,但这是不可能的。
如果可以的话,您可能需要重新考虑您的应用程序体系结构。但在不了解更多信息的情况下,请查看Ember.Instrumentation。不确定这是否是最好的方法,但也许它可以帮助你。
您可以使用它将来自Ember外部的发送信号/事件发送到Ember中。
// use jQuery to setup a click handler outside of Ember that will send
// Ember an an 'html.click' event that we defined
$('html').click(function(evt) {
Ember.Instrumentation.instrument('html.click', evt);
});
在Ember内部,您可以定义当检测到该事件时会发生什么:
// maybe in a route
Ember.Instrumentation.subscribe('html.click', {
before: function(name, timestamp, payload) {
this.send('handleHtmlClick', payload);
},
after: function(){}
});
我认为你可以这样做来迫使Ember路由转换从LSA重新加载记录。