从select中选择一个值

时间:2013-09-09 12:53:10

标签: ember.js ember-data

使用 ember.js 1.0 ember-data 1.0 beta2

我有一个具有以下属性的模型(状态)

state: DS.attr('string'),
stateName: DS.attr('string'),

和具有以下属性的模型(客户)

name: DS.attr('string'),
stateID: DS.attr('string'),
state: DS.belongsTo("state")

我希望能够编辑客户并从下拉列表中选择状态(状态ID +名称显示:例如“FL - Florida”,并且在选择时,将state.stateID存储到客户中。 stateID属性

这是我第一次尝试这样的事情,并且对这个过程感到有些困惑。

在我的客户路线中,我设置了以下内容:

setupController: function(controller, model) {
    this._super(controller, model);
    this.controllerFor('state').set('content', this.store.find('state'));
}

我的选择是:

{{view Ember.Select
   contentBinding="controllers.state.content"
   optionValuePath="content.stateName"
   optionLabelPath="content.stateName" 
   valueBinding="content.stateID"
   selectionBinding="content.stateID"
   prompt="Select a state"
}}

现在我很困惑从哪里开始。

感谢

更新

将视图更改为

{{view Ember.Select
   contentBinding="controllers.state.content"
   optionValuePath="content.stateID"
   optionLabelPath="content.stateName"
   valueBinding="customer.stateID"
}}

我仍然没有得到更改的stateid属性。我也试过了

selectionBinding="customer"

无济于事。

更新#2

我怀疑我的问题可能与属性名称有关。我将customer.stateID属性更改为customer.foobar并将select更改为read

{{view Ember.Select
  contentBinding="controllers.state.content"
  optionValuePath="content.stateName"
  optionLabelPath="content.stateName"
  valueBinding="foobar"
  class="form-control"

}}

现在customer.foobar使用select中的值进行更新。

客户名为stateID的属性是否存在问题?我有状态模型和状态控制器等,所以有冲突吗?

2 个答案:

答案 0 :(得分:1)

毕竟 - 问题出在模型本身。状态模型没有stateID字段,它是state.state ...

我衷心地向所有浪费时间的人道歉。这样一个愚蠢的错误。

答案 1 :(得分:0)

好吧,也许不是最好的解决方案,但效果很好:

App.ItemModalController = Ember.ObjectController.extend({
  content: [],

  availableCategories: function() {
    return this.store.find('category');
  }.property(),

  //...
});

选择:

{{view Ember.Select
  contentBinding="availableCategories"
  valueBinding="categorySelected"
  optionLabelPath="content.title"
  optionValuePath="content.id"
  prompt="Please select a category"
  class="form-control"
}}