thp*_*pnk 5 javascript router model ember.js ember-router
我在Ember有一个主/详细视图.如果我直接调用详细信息页面,详细信息页面的模型钩子需要来自父(主)的模型(数据).调用详细模型钩子 - 获取/调用模型的正确方法是什么,因此详细信息钩子中的modelFor函数可以工作.
路由器:
App.Router.map(function(){
this.resource('index', { path: '/' } );
this.resource('devices', { path: '/devices'}, function() {
this.resource('device', { path: ':imei'});
});
});
Run Code Online (Sandbox Code Playgroud)
主路线:
App.DevicesIndexRoute = Ember.Route.extend({
model: function() {
var self = this;
return requestController.get({
url: "foo/bar/",
success: function(data) {
console.log(data);
return data;
},
error: function() {
console.log("error");
return [];
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
细节路线:
App.DeviceRoute = Ember.Route.extend({
model: function(args) {
////// Gets Called - needs data from master!!
var model = this.modelFor('devices.index').findBy('imei', args.imei);
return model;
}
});
Run Code Online (Sandbox Code Playgroud)
感谢帮助
该devices.index路由不是父路由,它的另一个叶路线.通常,您将在资源路由上定义模型,然后通过叶子路径进行访问:
App.Router.map(function(){
this.resource('index', { path: '/' } );
this.resource('devices', { path: '/devices'}, function() {
this.route('device', { path: ':imei'});
});
});
Run Code Online (Sandbox Code Playgroud)
主路线:
App.DevicesRoute = Ember.Route.extend({
model: function() {
var self = this;
return requestController.get({
url: "foo/bar/",
success: function(data) {
console.log(data);
return data;
},
error: function() {
console.log("error");
return [];
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
索引路线:(在未来的ember版本中,这将自动获取父模型)
App.DevicesIndexRoute = Ember.Route.extend({
model: function() {
this.modelFor('devices');
}
});
Run Code Online (Sandbox Code Playgroud)
细节路线:
App.DevicesDeviceRoute = Ember.Route.extend({
model: function(args) {
var model = this.modelFor('devices').findBy('imei', args.imei);
return model;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |