所以,我试图在控制器中访问我的模型属性。
控制器:
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)
它不起作用,有没有其他方法可以做到这一点?
另一个更新如何访问我们在 ember 数据模型属性中从服务器获取的复杂对象,
创建 twiddle来演示
使用 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 中您应该能够访问model
将代表 RecordArray 的内容。您可以查看此答案以了解如何使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句