所以,我试图在控制器中访问我的模型属性。
控制器:
dashobards: [
{ id: 12, name: 'test' },
{ id: 17, name: 'test2' },
];
在路线中,我的模型名为信息中心
return Ember.RSVP.hash({
dashboards: this.store.findAll('dashboard'),
}).then((hash) => {
return Ember.RSVP.hash({
dashboards: hash.dashboards
});
}, self);
我想在这样的控制器中得到结果:
dashboards: [
{ id: 12, name: 'test' },
{ id: 17, name: 'test2' },
{ id: 17, name: 'test1' },
{ id: 20, name: 'test20' },
];
在控制器中,我试图像这样访问这个模型:
this.dashborads = this.get(model.dashobards)
它没有用,有没有其他方法可以做到这一点?
答案 0 :(得分:0)
另一个更新如何访问我们从ember数据模型attibute中的服务器获取的复杂对象,
使用DS.attr(),
定义属性export default Model.extend({
permissions:DS.attr()
});
路线档案,
model(){
return this.store.findAll('dashboard');
}
您的服务器响应应该是,
data: [{
type: 'dashboard',
id: 1,
attributes: {
permissions: {'name':'role1','desc':'description'}
}
}]
hbs文件,
{{#each model as |row| }}
Name: {{row.permissions.name}} <br/>
Desc: {{row.permissions.desc}} <br />
{{/each}}
更新: 我仍然不确定这个要求,你的旋风应该是最小化的工作旋风以便更好地理解。但是我会提供我的观察,
1
model(params) {
this.set('id', params.userID);
const self = this;
return Ember.RSVP.hash({
dashboards: this.store.findAll('dashboard'),
user: this.store.findRecord('user', params.userID)
}).then((hash) => {
return Ember.RSVP.hash({
user: hash.user,
dashboards: hash.dashboards
});
}, self);
}
上面的代码可以简单地写成
model(params) {
this.set('id', params.userID);
return Ember.RSVP.hash({
dashboards: this.store.findAll('dashboard'),
user: this.store.findRecord('user', params.userID)
});
}
总是在init方法中初始化数组属性。参考https://guides.emberjs.com/v2.13.0/object-model/classes-and-instances/
要从数组中删除条目,
this.dashboard.pushObject({ 'identifier': '', 'role': '' });
尝试此this.get('dashboard').pushObject({ 'identifier': '', 'role': '' });
。
如果可能而不是普通对象,您可以使用Ember.Object之类的
this.get('dashboard').pushObject(Ember.Object.create({ 'identifier': '', 'role': '' }));
removeDashboard(i) { let dashboard = Ember.get(this, 'dashboard'); Ember.set(this, 'dashboard', dashboard.removeObject(dashboard[i])); }
上面的代码可以写成,因为i
是一个索引
removeDashboard(i) {
this.get('dashboard').removeAt(i)
}
只需在路由模型挂钩中执行return this.store.findAll('dashboard');
,不要覆盖setupController
挂钩,然后在hbs中,您应该能够访问代表RecordArray的model
。您可以查看this answer了解如何使用此功能。