EmberJS填充了另一个模型的下拉列表

时间:2014-01-04 19:22:19

标签: ember.js

我是EmberJS的新手。我正在尝试用两个实体,用户和部门制作一个简单的应用程序。我为用户CRUD和部门CRUD提供了单独的模板和路径。

以下是关于我的模型的详细代码

App.ApplicationAdapter = DS.RESTAdapter.extend();

App.Store = DS.Store.extend({
    adapter: 'App.ApplicationAdapter'
});


DS.RESTAdapter.reopen({
  host: 'http://localhost:8081/slim'
});


App.Department = DS.Model.extend({
    departmentname : DS.attr(),
    user           : DS.hasMany('user')
});


App.User = DS.Model.extend({
  username     : DS.attr('string'),
  full_name    : DS.attr(),
  email        : DS.attr(),
  department_id   : DS.belongsTo('department')
});

在阅读模式下,我可以使用此

显示用户所在的部门
Department: {{department_id.departmentname}}

但是,在用户编辑/用户创建模式下,我想在此处显示一个显示部门的下拉列表。 我不知道如何做到这一点,因为在定义'用户'路线时,我将模型指定为App.User

我尝试过但没有成功

{{view Ember.Select content=model.departments}}

我的代码使用PHP rest api,因此它不会在jsbin上运行。但我仍然把链接

http://jsbin.com/oViJeyAy/2/edit

1 个答案:

答案 0 :(得分:2)

在较新版本的ED(1.0 beta 1+)中不需要这样做

App.Store = DS.Store.extend({
    adapter: 'App.ApplicationAdapter'
});

DS.RESTAdapter.reopen({
  host: 'http://localhost:8081/slim'
});

应该只是这个

App.ApplicationAdapter = DS.RESTAdapter.extend({
  host: 'http://localhost:8081/slim'
});

只需向控制器添加属性并获取部门

即可
App.UserController = Ember.ObjectController.extend({
    departments: function(){
        return this.store.find('department');
    }.property(),

    isEditing : false,

    edit: function(){
        this.set('isEditing', true);
    },

    doneEditing: function(){
        this.set('isEditing', false);
        var user = this.get('model');
        user.save();
    }
});

然后在您的用户模板中

{{view Ember.Select 
       content=departments
       optionValuePath="content.id"
       optionLabelPath="content.departmentname"}}

http://emberjs.com/api/classes/Ember.Select.html

PS这里有一篇关于Ember Data 1.0 beta + https://github.com/emberjs/data/blob/master/TRANSITION.md

更改的简短读物