变量无法在每个ember内部访问

时间:2014-12-17 07:13:35

标签: ember.js

为什么在每个ember循环中都无法访问控制器的属性?在我们的例子中, priorsAlphabetical 是控制器的属性。

each conditionsAlphabetical itemController="booleanRadio"
        .col-xs-6.col-lg-5.option-value: .option-value-content
          partial "boolean-radio"
          if value
            a.add-note-link click="addConditionPrior this target='view'"
              span.icon-newspaper-alt.newspaper-color
          if-existing-prior param1=name param2=priorsAlphabetical
        a.add-note-link click="addConditionPrior this target='view'"
          span.icon-newspaper-alt

此处 priorsAlphabetical 在每个循环中为空。但是 priorsAlphabetical 可以在每个循环之外访问。

1 个答案:

答案 0 :(得分:2)

each助手正在将当前范围从控制器更改为当前循环的对象,因此在块内部尝试从每个条件对象中检索priorsAlphabetical。

#this context is the controller
each conditionsAlphabetical
  =name #this context is each condition

这是each助手的一个有点令人困惑的功能,因此将不推荐使用Ember 2.0

要解决您的问题,请使用each condition in conditionsAlphabetical帮助程序,它将控制器保留为当前作用域。

#this context is the controller
each condition in conditionsAlphabetical
  =name #this context is still the controller

所以在你的特定情况下:

each condition in conditionsAlphabetical itemController="booleanRadio"
        .col-xs-6.col-lg-5.option-value: .option-value-content
          partial "boolean-radio"
          if condition.value
            a.add-note-link click="addConditionPrior condition target='view'"
              span.icon-newspaper-alt.newspaper-color
          if-existing-prior param1=condition.name param2=priorsAlphabetical
        a.add-note-link click="addConditionPrior condition target='view'"
          span.icon-newspaper-alt