Ember.js:在服务

时间:2016-04-20 17:31:40

标签: javascript ember.js computed-properties

所以我在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}},我什么也得不到。

2 个答案:

答案 0 :(得分:1)

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

有两个问题:

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

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

答案 1 :(得分:1)

不能评论上述答案是正确的,因为我没有足够的声誉,但我想添加一个链接到与Ember的可观察枚举方法相关的文档:< / p>

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