Ember.js:在服务的把手中使用计算的 属性
Ember.js: Using a computed property in handlebars from a Service
所以我在 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}}
我什么也得不到。
有两个问题:
contexts
是一个数组。当您 console.log
或 alert
它时,那些方法在某些浏览器内部 JSON.stringify
该对象为您提供方便。 Ember 不会那样做。您需要自己格式化数组,或者像我一样,each
覆盖它。出于调试目的,请随意使用 log
助手。
数组上的计算属性正在通过 Ember 的方法(例如 pushObject
和 removeObject
观察数组变化。简单地使用 push
或 splice
不会更新计算的 属性.
无法评论上面的正确答案,因为我没有足够的声誉,但我想在与 Ember 的可观察方法相关的文档中添加 link对于枚举:
所以我在 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}}
我什么也得不到。
有两个问题:
contexts
是一个数组。当您console.log
或alert
它时,那些方法在某些浏览器内部JSON.stringify
该对象为您提供方便。 Ember 不会那样做。您需要自己格式化数组,或者像我一样,each
覆盖它。出于调试目的,请随意使用log
助手。数组上的计算属性正在通过 Ember 的方法(例如
pushObject
和removeObject
观察数组变化。简单地使用push
或splice
不会更新计算的 属性.
无法评论上面的正确答案,因为我没有足够的声誉,但我想在与 Ember 的可观察方法相关的文档中添加 link对于枚举: