在循环中选择,选择单个,显示多个选定

时间:2014-12-03 09:08:01

标签: ember.js

当在{{#each}}中使用Ember.select时,如果我在一个选择中选择选项,则表明它在所有其他选择中都被选中。下面是代码和屏幕截图。

模板中的代码:

{{#model.feeddefinitions中的每个Feed}}                 

                {{#if isEditing}}
                    <td> {{view Ember.Select
                    content=model.sections
                    optionValuePath="content.id"
                    optionLabelPath="content.name"
                    prompt="Select Section"
                    value=selectedSection}}</td>
                    <td>
                        <button class="btn btn-primary btn-sm" {{action 'add_section_to_feed' model feed.id}}>Add</button>
                    </td>
                {{/if}}
            </tr>

        {{/each}}

4 个答案:

答案 0 :(得分:1)

您遇到此问题,因为selectedSection的上下文不是单个Feed。

如果每个Feed都有一个&#39; selectedSection&#39;属性,您可以提供&#39; value = feed.selectedSection&#39;

否则,您必须为单个Feed定义itemController并在其中定义selectedSection属性。

答案 1 :(得分:0)

问题是所有Ember.Select共享一个控制器,并且所有这些控制器都绑定到同一控制器value=selectedSection中的同一属性。

您需要为每个Ember.Select配备一个单独的控制器。每个项目都需要一个新的控制器,为此您可以使用render帮助器。

示例:http://emberjs.jsbin.com/xahevi/1/edit?html,js,console,output

答案 2 :(得分:0)

您的所有选择都绑定在同一个属性上。

您需要将值/选项绑定到模型属性或每个项目的控制器属性上。您可以让each帮助程序在控制器中包装每个模型,如下所示:

{{#each feed in model.feeddefinitions itemController='feed-definition'}}
  ...
{{/each}}

答案 3 :(得分:0)

基本上你要做的是 -

在循环时将项目控制器声明为{{#each itemController=DesignPhotoController}}。 这样每个单独的对象都有一个单独的控制器。

并添加

 selectedSection: null,
DesignPhotoController

并通过控制器中的this.get("selectedSection")访问它。

这是 - FIDDLE