【问题标题】:Ember.js .refresh() not refreshing my pageEmber.js .refresh() 不刷新我的页面
【发布时间】:2020-11-10 04:19:42
【问题描述】:

我正在使用旧的 ember 应用程序,我正在处理的功能是打开模式,选择标签并关闭模式。关闭模式操作使用发送到照片控制器中具有刷新操作的操作,但我在该控制器中的计算属性没有重新运行。我需要重新运行 quickSearchTagNames 计算属性,以获取要在此页面上显示的新标签。通过阅读 Ember 文档,我了解到在控制器中调用刷新应该刷新该页面。

最喜欢的标签路线:

 close() {
        console.log("TRANSITION")
        this.send("sessionChanged");
      },     

拍照路线

sessionChanged: function() {
      console.log("Photo session change")
      this.transitionTo('franchisor.photos.index').then(() => {
        this.refresh();
      });
    }

在照片控制器中刷新后未重新加载的计算属性

quickSearchTagNames: Ember.computed('franchisor.id', function() {
      var franchisor = this.get('franchisor');
      var franchisorID = franchisor.get('id');
      const favoriteTagsPromise = this.get('favoriteTags').index({
        franchisorID
      });
console.log("IN quickSearchTagNames")
      const tagNamesPromise =
        favoriteTagsPromise.then(favoriteTags => favoriteTags.filter(tag => tag.get('favorite') === true).map(tag => tag.get('tagName')));
        console.log("tagNamesPromise", tagNamesPromise)
      return DS.PromiseArray.create({
        promise: tagNamesPromise
      });
    }),

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    我在该控制器中的计算属性没有重新运行。

    这是意料之中的。 Route#refresh(); 仅*刷新model,不会使任何计算属性无效。

    要更新 CP,您必须更新 CP 的依赖项密钥或运行 notifyPropertyChange。但是在你的情况下,我认为CP不是正确的。

    我会考虑将数据加载移出 CP,并在initconstructor 上调用设置属性的方法。那么你可以简单地重新运行这个方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 2021-03-20
      • 2011-01-06
      • 2011-11-23
      • 2017-09-06
      • 2011-04-16
      • 2011-12-22
      相关资源
      最近更新 更多