从外部重新加载Ember数据



我正在将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重新加载记录。

最新更新