余烬自定义选择。如何为所选元素创建隔离范围?

时间:2014-08-22 08:44:44

标签: ember.js

我找到了ember的自定义选择 https://gist.github.com/pixelhandler/6320922。它基于组件并且运行良好。 但我有一个麻烦。 select的数据源在其所有实例之间共享。 我想将默认值设置为数据集的第一个元素,但是当我在一个选择中更改值时,它会随处更改。你能帮帮我吗?以下是示例:http://emberjs.jsbin.com/guhobutafado/19/edit

1 个答案:

答案 0 :(得分:1)

在你的例子中,你的选择框都引用带有绑定的相同数据集,所以,当然,当一个更改时,它们都会...这就是数据绑定的原则。

然后,您必须为您的问题使用不同的数据集,以保存每个选择的修改。如果没有这个,你就无法访问每个数据,因为它们指向相同的事物

您可以使用多个这样的数组:

App.IndexController = Ember.Route.extend({
  name: 'one',
  className: 'dropdown',
  choices1: [
    { choice: 'Choose One' },
    { choice: 'First' },
    { choice: 'Last' }
  ],
  choices2: [
    { choice: 'Choose One' },
    { choice: 'First' },
    { choice: 'Last' }
  ],
  choices3: [
    { choice: 'Choose One' },
    { choice: 'First' },
    { choice: 'Last' }
  ]
});

然后使用每个独立数组调用 faux-select 组件:

{{faux-select name=name className=model.className
  choices=choices1 selected=choices1.[0].choice}}

{{faux-select name=name className=model.className
  choices=choices2 selected=choices2.[0].choice}}

{{faux-select name=name className=model.className
  choices=choices3 selected=choices3.[0].choice}}

Here是一个有着这种哲学的JSBin。