Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ember.js不{{bindAttr}};标签>;用于将attibute设置为集合中正确的inputField.elementId_Ember.js - Fatal编程技术网

ember.js不{{bindAttr}};标签>;用于将attibute设置为集合中正确的inputField.elementId

ember.js不{{bindAttr}};标签>;用于将attibute设置为集合中正确的inputField.elementId,ember.js,Ember.js,我正在尝试使用{{bindAttr}}和输入字段的[viewName].elementId将标签链接到输入字段。它在单个条目视图上工作,但在显示多个记录时不起作用:它只是将标签链接到集合中的最后一个输入字段。(这在上一次使用旧的ember库的迭代中是可行的,但现在不行了。)我创建了一个,但其要点是: {{#each controller}} <fieldset> <label {{bindAttr for="view.tbFu

我正在尝试使用{{bindAttr}}和输入字段的[viewName].elementId将标签链接到输入字段。它在单个条目视图上工作,但在显示多个记录时不起作用:它只是将标签链接到集合中的最后一个输入字段。(这在上一次使用旧的ember库的迭代中是可行的,但现在不行了。)我创建了一个,但其要点是:

{{#each controller}}
    <fieldset>              
        <label {{bindAttr for="view.tbFullName.elementId"}}>Full Name</label>
        {{view App.DetailTextField viewName="tbFullName" placeholder="Full Name" valueBinding="fullName" readonly="readonly"}}                              
    </fieldset>
{{/each}}
{{#每个控制器}
全名
{{view App.DetailTextField viewName=“tbFullName”placeholder=“Full Name”valueBinding=“fullName”readonly=“readonly”}
{{/每个}}
我想也许我可以创建一个collectionView并为viewName创建一个计算属性,该属性将为集合中的每个项目生成一个唯一的ID,这在回答另一个问题时提到过。但这变得太复杂了——只是为了在用户单击相应标签时,我可以让输入字段高亮显示自己


感谢您的帮助。

如果您想把事情做好,我必须承认表格有点棘手。但有一个余烬附加来拯救,例如

看一看,它可能会帮助您准确地解决您所面临的问题,例如表单字段具有唯一标签等问题


希望有帮助。

创建一个包装余烬。查看标签和输入字段。我们称之为App.FieldView:

App.FieldView = Ember.View.extend({
  tagName: 'fieldset'
});
然后在模板中:

{{#each controller}}
  {{#view App.FieldView}}              
    <label {{bindAttr for="view.tbFullName.elementId"}}>Full Name</label>
    {{view App.DetailTextField viewName="tbFullName" placeholder="Full Name" valueBinding="fullName" readonly="readonly"}}                              
  {{/view}}
{{/each}}
{{#每个控制器}
{{{#查看应用程序.FieldView}
全名
{{view App.DetailTextField viewName=“tbFullName”placeholder=“Full Name”valueBinding=“fullName”readonly=“readonly”}
{{/view}
{{/每个}}

小提琴:Panagiotis Panagi正确回答了问题。我只想补充一下发生这种情况的原因,即:-链接到错误的视图

模板中的
视图
属性是指包装html标记的余烬视图。但是,此属性根据其所在的上下文具有不同的值

该值取决于放置在其中的视图块。默认情况下,模板本身对应于本例中的视图,
ListOfPeopleTemplateView

因此,当您绑定到
view.tbFullName.elementId
时,实际上是绑定到
{ListOfPeopleTemplateView}.tbFullName.elementId的实例。循环结束时,唯一可见的
tbFullName
是最后一个

Panagiotis Panagi的解决方案是将标签包装在另一个视图中,因此
view
的值更改为该块中的值,从而指向正确的
tbFullName

最后,实现相同结果的一个更简单的方法是将textfield包装在标签内。那么您根本不需要使用
标签进行
绑定

<label>Full Name
  {{view App.DetailTextField viewName="tbFullName" placeholder="Full Name" valueBinding="fullName" readonly="readonly"}}    
</label>
全名
{{view App.DetailTextField viewName=“tbFullName”placeholder=“Full Name”valueBinding=“fullName”readonly=“readonly”}

看看这个

,知道easyForm的存在很有趣。我想现在我将继续手工构建我的表单,这样我就可以扩展我对余烬的理解。在这一点上,我也对依赖另一个库持谨慎态度。非常感谢。感谢您对@panagiotis panagi答案的解释。让事情顺利进行很好,但如果我能理解原因,那就更好了。并将输入字段包装在标签内-这是一个简单的解决方案!但是这样做可能会有任何副作用吗?周围的
label
label for
基本相同<当文本字段的标签远离文本字段且不能被文本字段包围时,代码>标签将提供帮助。