【问题标题】:How to access parent item in handlebars helpers?如何访问车把助手中的父项?
【发布时间】:2014-07-10 05:03:29
【问题描述】:

我有一个模板。

{{#each dbModel in model}}
<h2>Database Name : {{dbModel.databaseName}}</h2>
<h3>Select Table: 
                     {{view Ember.Select
                          content=dbModel.tables
                          optionValuePath="content.tableName"
                          optionLabelPath="content.tableName"  
                          valueBinding = "dbModel.selectedTable"
                          selectBinding = "dbModel.selectedTable"
                    }}
</h3>
<h2>Selected Table is : {{dbModel.selectedTable}}</h2>
{{#each table in dbModel.tables}}
  {{dbModel.selectedTable}}       
  {{#matchTable table.tableName dbModel.selectedTable}}
      //Get fields is selected table match with table name
  {{/matchTable}}
{{/each}}

现在在 matchTable 助手中,我得到了 table.tableName 的值,但得到了 dbModel.selectedTable is undefined 的值。

dbModel.selectedTable 不是实际模型的一部分,我已将其添加到控制器中,如下所示。

App.DatabaseController = Ember.ArrayController.extend({
    selectedTable:[],
    actions: {
        cancel: function () {
         // something
        }
    }
});

当我更改 select 的值时,它会自动更新 &lt;h2&gt; 标记中的信息。所以这意味着该值正在设置并正确绑定。但是当我尝试传递它时,它只是显示未定义。我搜索发现可以使用../dbModel.selectedTable。仍然是未定义的。请任何人指导。
在每个循环中将父级传递给助手的方法是什么?

【问题讨论】:

  • 一些想法:尝试设置 itemController,我不确定没有它你是如何访问 selectedTable 的。尝试使用 {{with}}。我创建了一个 jsbin 来尝试重现它,它正在工作:emberjs.jsbin.com/fakaqoru/2/edit
  • 谢谢,但没用。

标签: javascript jquery model-view-controller ember.js handlebars.js


【解决方案1】:

您的#each 循环将您放入tables 数组的范围内。 ../ 将您置于 dbModel 对象的范围内。要在循环内访问selectedTable,请使用../selectedTable

【讨论】:

  • 感谢它现在不是未定义的,而是控制器中声明的空白数组 []。但是在

    标签中我可以看到 selectedTable.

  • 尚不清楚您是否仍有问题...请考虑接受此答案并(如果需要)提出新问题。 :)
  • 那我得问新问题了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2013-02-05
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多