这似乎很明显。我不知道我哪里出错了。
在控制器中,用于计算属性:
totalMonthlyEsales: (->
@findBy('key', 'value1')
).property('@each.answer')
我可以在我的模板中索取一个属性。
<div>{{totalMonthlyEsales.answer}}</div>
返回“23424”
但是,如果我尝试
totalMonthlyEsales: (->
@findBy('key', 'value1').get('answer')
).property('@each.answer')
我收到错误“Uncaught TypeError:无法调用方法'获取'未定义” 最终我想做一些像
这样的事情totalMonthlyEsales: (->
parseInt @findBy('key', 'value1').get('answer')
).property('@each.answer')
plccDcSalesCash: (->
parseInt @findBy('key', 'value2').get('answer')
).property('@each.answer')
otherTenderTypes: (->
@get('plccDcSalesCash') - @get('totalMonthlyEsales')
).property('totalMonthlyEsales', 'plccDcSalesCash')
答案 0 :(得分:0)
我的猜测是ArrayController的内容是异步填充的,虽然最终会成为该计算属性返回的值(有一个与之关联的答案),当计算属性首先触发时,那里不是匹配值,因此它返回undefined,当然,您不能在未定义的值上调用.get()
。既然你在coffeescript中,你就可以这样做:
totalMonthlyEsales: (->
@findBy('key', 'value1')?.get('answer')
).property('@each.answer')
?
表示如果从findBy()
返回的值是真实的,则只尝试方法调用。