ember.js 在仍被检索的情况下导航时模型出现问题

wz8daaqr  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(153)

使用一个旧的ember应用程序(2. 18. 1)。下面的问题重复了太多次,以至于在我现在可用的时间范围内都无法修复。
组件正在加载它自己的数据(设置this.get('model ')),并且一切正常。
然而,由于数据库现在有点慢,用户有时会单击一个链接,在那里模板呈现组件,并开始加载它的数据。
如果用户单击另一个链接(指向执行完全相同操作的路线),则会加载来自先前组件和“新”组件的数据。
当数据加载时,我不能重置模型,因为加载数据的fetchRecord方法会被分页(当用户向下滚动时)反复调用。
我敢肯定,我只是没有想到一个明显的解决方案(没有工作的ember几年),任何建议?
(ps:其中一些组件不使用分页,同时,在将其设置为api返回的值之前,我将清除模型)

xhv8bpkk

xhv8bpkk1#

恐怕ember-data不支持中止请求,但是您可以直接在组件上处理,通过 AJAX 或fetch调用端点,然后使用pushing the payloadlifecycle hooks中止请求。例如,您可以在willDestroyElement钩子上触发abort()

import $ from 'jquery';
import Component from '@ember/component';

export default Component.extend({
  init() {
    this._super(...argument);
    const xhr = $.get( "ajax/test.html", (data) => {
      this.get('store').pushPayload(data);
    });
    this.set('xhr', xhr);
  }

  willDestroyElement() {
    this._super(...argument);
    this.get('xhr').abort()
  }
});

相关问题