我的Ember.js模型,视图和控制器类变得有点冗长。部分原因来自于撰写this.get('attr')
而非this.attr
。
只要直接声明属性而不是通过绑定声明属性,总是只写this.attr
是否可以?
(我知道设置是一个不同的问题 - 您必须调用this.set('attr', value)
才能更新相关属性和模板。)
答案 0 :(得分:5)
IIRC,您可以为您知道无法观察的私人财产执行此操作。
约定是在私有属性前加上下划线(例如_myProperty),告诉Ember不要绑定它。
查看.get()的文档,或者如果您愿意,请查看source code。
答案 1 :(得分:3)
如果正在观察或绑定该属性,则不要执行'this.attr'。 get命令是触发观察者和绑定的关系。
答案 2 :(得分:0)
该问题的先前答案在Ember的最新版本中已过时。从2018年4月发布的3.1开始,原生ES5吸气剂也可以用于计算属性。在Ember 3.1中,this.get('attr')
是对象使用unknownProperty
,是Ember Data PromiseProxyObject
,还是与路径一起使用,并且路径的某些元素可能不是对象。有关详细信息,请参阅release notes。在这种情况下,您会得到有用的断言。