我是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上运行。但我仍然把链接
答案 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
更改的简短读物