我一直在查看https://github.com/emberjs/ember.js/blob/master/packages/ember-metal/lib/computed.js#L482,我已经看到计算属性实际上更强大,它们已在指南中记录。
一些非常有用的简单用例是:
Ember.Object.create({
propertyA: Ember.computed.empty('anotherProperty'),
propertyB: Ember.computed.not('anotherProperty'),
propertyB: Ember.computed.equal('anotherProperty', "Ed Balls")
});
但我并不了解更高级的案例如何运作:https://github.com/emberjs/ember.js/blob/master/packages/ember-metal/lib/computed.js#L617
我真的可以使用一些澄清 - 我怀疑我可能正在编写一个大量的样板文件,我可以避免使用它们:笑脸:。
一旦我了解它们的工作原理,我绝对可以尝试向指南添加一些文档。
答案 0 :(得分:1)
有些用例(虽然不是那么高级但只是微不足道)看起来像:
...
// this could be in your controller
hasPost: Ember.computed.bool('content.post')
hasComments: Ember.computed.bool('content.post.comments')
showComments: Ember.computed.and('hasPost', 'hasComments')
// here you could perfectly bind on the showComments property
...
你应该强调的一件事是CP不能链(现在),所以这可能限制了它最先进的使用情况。但是,如果他们可以连锁,那么你可以做类似的事情:
...
// not possible at the moment
showComments: Ember.computed.bool('content.post') && Ember.computed.bool('content.post.comments')
...
可以找到一些用例(尽管只有测试用例)here。 这个issue可能也很有意思。
希望有所帮助