<select>元素。 ValueBinding到{{#each}} </select>中对象的属性

时间:2012-09-23 09:28:15

标签: ember.js

我花了很多时间尝试各种各样的事情,我终于放弃了。

我有一个对象数组,我使用{{#each}}帮助器在列表中的页面上显示。需要将特定属性绑定到Ember.Select视图。因此,如果我有10个项目,则会有10个选择视图。

“选择”视图的可能选项定义为数组。这是有效的,选择视图显示其标签/值是否正确。问题是绑定到我想要设置的属性。我无法在{{#each}}中获取对象的上下文。这就是我所拥有的:

{{#each questions}}
    {{view Ember.Select
        contentBinding="Editor.Enums.
        optionValuePath="content.value"
        optionLabelPath="content.label"
        valueBinding="??what goes here if I want to change the 'type' property??"
        prompt="Select"
    }}
{{/each}}

所有示例绑定1选择视图到位于全局应用程序上的属性,它不允许我使用重复的元素。

编辑:我做了一个有趣的观察......它确实SEEM有限!我以前认为他们不是因为他们没有显示目前为该物业设定的价值。但是,在更改选择时,有界属性会发生变化。所以其他东西在这里工作。

编辑:如果我取消“提示”,它会选择列表中的第一项,并将我的有界属性更新为该值!什么给出头表。这应该不是这么难......

谢谢! 达里尔

2 个答案:

答案 0 :(得分:1)

我不知道是否理解,但是如果你想在{{#each}}助手中定义上下文,你可以这样写:

{{#each question in questions}}
   {{question.type}}
{{/each}}

<击>

编辑:我认为我按预期工作了。 事实上,如果提示符为null,或者它不是select的正确选择,则初始值会被提示覆盖。

<script type="text/x-handlebars">
  {{#each App.questions}}
    {{view Ember.Select
      contentBinding="App.content"
      optionValuePath="content.type"
      optionLabelPath="content.label"
      prompt="Select a value"        
      valueBinding="type"        
    }}
    {{type}}
  {{/each}}
</script>
App = Ember.Application.create({});
App.questions = [
  {type: null},
  {type: 'type1'}
];

App.content = [
  {label: "This is type 1", type: "type1"},
  {label: "This is type 2", type: "type2"}
];

http://jsfiddle.net/Sly7/ByRNt/12/

答案 1 :(得分:0)

{{#each questions}}
    {{view Ember.Select
        contentBinding="Editor.Enums.
        optionValuePath="content.value"
        optionLabelPath="content.label"
        valueBinding="type"
        value="type"
    }}
{{/each}}

这看起来真的很不稳定。

所以我不得不强行提供选择的初始值(我假设它将使用绑定来确定它的初始值)。

接下来,如果您指定一个提示符(在1.0.pre上),它将覆盖所设置的任何值。

哦,1天的工作。

达里尔