1

我是 ember.js 新手,正在尝试在 ember.js 中重写项目的 CRUD 页面。但是我遇到了一个关于 Ember.Select 的问题。

脚步:

  1. 在创建页面上,有一个 DropDown 控件,其内容是从服务器端获取的。
  2. 用户单击提交按钮后,将调用操作“保存”。我在“保存”操作中添加了一个断点来观察 distributiontarget.get('serviceDataModel')。
  3. 如果我不单击下拉框,则 distributiontarget.get('serviceDataModel') 的值未定义。如果我单击下拉控件并选择一个,则 distributiontarget.get('serviceDataModel') 的值是 url 的值。

我认为原因是从服务器返回数据后没有为 Ember.Select 设置默认值。但我找不到设置默认值的方法。 Ember Select引入了设置默认值的方法。但是 this.store.find('distribution') 会返回一个承诺。我们怎样才能得到第一个对象?此外,当我要在编辑页面上工作时,如何在 DropDown 中选择一个项目?

APP.DistributiontargetsCreateController= Ember.ObjectController.extend({
    distributions: function() {
        return this.store.find('distribution');
    }.property(),
    actions: {
        save: function(distributiontarget) {
            ..............
            debugger;
        }
    }
});

APP.Distribution = DS.Model.extend({
    name: attr(),
    url: attr()
});

APP.Distributiontarget = DS.Model.extend({
    organizationId : attr('string'),
    name : attr('string'),
    deliveryType : attr('string'),
    host : attr('string'),
    baseDir : attr('string'),
    username : attr('string'),
    password : attr('string'),
    serviceDataModel : attr('string')
});


<form>
   <div class="control-group required">
       <label class="control-label">Username</label>
       <div class="controls">
           {{ view Ember.TextField valueBinding="username" }}
        </div>
    </div>
             ..................
    <div class="control-group required">
        <label class="control-label">Default Data Model</label>
        <div class="controls">
        <span>
            {{view Ember.Select
                    content=distributions
                    optionValuePath="content.url"
                    optionLabelPath="content.name"
                    valueBinding="serviceDataModel"
            }}
        </span>
        </div>
    </div>
    <div class="form-actions">
        <button type="submit" {{action save this}}> Save Distribution</button>
    </div>
</form>

服务器返回的数据:

{
  "distributions" : [ {
    "name" : "Test One",
    "url" : "http://192.168.204.164",
    "id" : "1"
  }, {
    "name" : "Test Two",
    "url" : "http://192.168.204.166",
    "id" : "2"
  }
 }
4

0 回答 0