Ember数组调用获取返回findBy返回undefined

时间:2014-01-20 20:03:24

标签: javascript ember.js findby

这似乎很明显。我不知道我哪里出错了。

在控制器中,用于计算属性:

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

1 个答案:

答案 0 :(得分:0)

我的猜测是ArrayController的内容是异步填充的,虽然最终会成为该计算属性返回的值(有一个与之关联的答案),当计算属性首先触发时,那里不是匹配值,因此它返回undefined,当然,您不能在未定义的值上调用.get()。既然你在coffeescript中,你就可以这样做:

totalMonthlyEsales: (->
  @findBy('key', 'value1')?.get('answer')
).property('@each.answer')

?表示如果从findBy()返回的值是真实的,则只尝试方法调用。