0

所以我在我的内部有这个计算属性component.jscontexts: Ember.computed.oneWay('myService.contexts'),

而且我能够从另一个动作中获取内容

 openHelp(){
      console.log(this.get('contexts'))
      alert(this.get('contexts'))
    }
  }

但是当我尝试使用 Handlebars ( {{contexts}}) 中的计算属性时,它只是空白。

我为这个问题创建了一个 Ember Twiddle:https ://ember-twiddle.com/38de64d58dcf3298df6d4176f15cbc0e?openFiles=components.my-component-help.js%2Ctemplates.components.my-component-help.hbs

如果我有一个数组foo: [ 'foo','bar']并且我做 {{foo}} 它在把手中输出。但是,如果我创建foo了一个计算属性,[ 'foo','bar']那么{{foo}}我什么也得不到。

4

2 回答 2

1

无法评论上述正确答案,因为我没有足够的声誉,但我想添加指向与 Ember 的可观察枚举方法相关的文档的链接:

https://guides.emberjs.com/v2.5.0/object-model/enumerables/

于 2016-04-20T21:15:52.007 回答
1

这是解决方案:https ://ember-twiddle.com/e9c2ef05e27013a389e0b2bfdaec3d40?openFiles=services.my-service.js%2Ctemplates.components.my-component-help.hbs

有两个问题:

  1. contexts是一个数组。当你console.logalert它时,那些方法在某些浏览器内部JSON.stringify为你提供方便的对象。Ember 不会那样做。您需要自己格式化数组,或者像我一样,对其进行格式化each。出于调试目的,请随意使用log帮助程序。

  2. 数组上的计算属性通过 Ember 的方法(例如pushObject和)监视数组突变removeObject。只需使用pushsplice不会更新计算的属性。

于 2016-04-20T19:58:22.170 回答