1

我一直在查看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

我真的可以使用一些澄清 - 我怀疑我可能正在编写大量样板文件,我可以通过正确使用这些样板来避免:笑脸:。

一旦我了解了它们的工作原理,我绝对可以尝试在指南中添加一些文档。

4

1 回答 1

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')
...

一些用例(尽管只有测试用例)可以在这里找到。这个问题也许也很有趣。

希望能帮助到你

于 2013-05-15T17:01:53.890 回答