【问题标题】:Ember.js: Using a computed property in handlebars from a ServiceEmber.js:在服务的把手中使用计算属性
【发布时间】:2016-08-13 13:31:14
【问题描述】:

所以我的component.js 中有这个计算属性:contexts: 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}} ,我将一无所获。

【问题讨论】:

    标签: javascript ember.js computed-properties


    【解决方案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 的方法(例如 pushObjectremoveObject)监视数组突变。简单地使用pushsplice 不会更新计算属性。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-29
        • 1970-01-01
        • 2016-07-29
        • 2017-12-18
        • 2013-11-29
        • 2014-07-17
        • 2012-07-27
        • 1970-01-01
        • 2020-12-10
        相关资源
        最近更新 更多