2014-12-03 102 views
0

当在{{#each}}中使用Ember.select时,如果我在一个选择中选择选项,它将显示它在所有其他选择中被选中。以下是代码和屏幕截图。在循环中选择,选择单个,显示多个选择

代码模板:

{在model.feeddefinitions {#each饲料}}

   {{#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}} 
+0

将代码放在余烬JS斌,我会帮助你。 – Ajey 2014-12-04 07:14:16

+0

http://jsbin.com/celefokoxi/1/edit我尽可能地添加了代码。 – plzdontkillme 2014-12-05 19:35:57

回答

1

因为selectedSection的上下文是不是个别饲料您遇到这个问题。

如果每个进料的“selectedSection”属性,你可以给“值= feed.selectedSection”

否则,您必须定义一个itemController为个别饲料和它定义selectedSection财产。

+0

谢谢,你可以点我如何定义itemController为个别饲料? – plzdontkillme 2014-12-03 15:52:55

+0

我试过feed.selectedSection,它修复了视觉的东西,但在控制器我没有得到的值。我应该如何获得价值。 – plzdontkillme 2014-12-05 00:29:04

+0

@plzdontkillme model.feeddefinitions将具有正确的数据。即每个进料将具有selectedSection属性,这将保持所述相应的选定值 – 2014-12-08 11:50:35

0

问题是,所有的Ember.Select都共享一个控制器,它们都绑定到相同的控制器value=selectedSection相同的属性。

你需要做的是每个Ember.Select都有一个单独的控制器。你需要一个新的控制器为每个项目,为此目的,你可以使用render帮手。

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

0

你选择的所有绑定到相同的属性。

你要么需要将值/选择绑定到模型属性或到控制器属性的每个项目。你可以有each辅助包装每个型号的控制器如下:

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

基本上你需要做的是什么 -

申报项目控制器{{#each itemController=DesignPhotoController}}而循环。 ,以便每个单独的对象将有一个单独的控制器。

而且在DesignPhotoController添加

selectedSection: null, 

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

这里是 - FIDDLE