我有router.js
:
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('analyses', function() {
this.route('new', { path: 'new'});
this.route('show', { path: ':analysis_id' });
this.route('edit', { path: ':analysis_id/edit'});
this.route('dataFunctions', { path: ':analysis_id/dataFunctions', resetNamespace: true }, function() {
this.route('new', { path: 'new'});
});
});
export default Router;
和这两个模型
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
dataFunctions: DS.hasMany('dataFunction', {async: true}),
});
和
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
analysis: DS.belongsTo('analysis', {async: true})
});
routes/data-functions/index.js
的内容:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
console.log(this.store.findRecord("analysis", id).get("dataFunctions"));
}
});
routes/analyses/index.js
的内容:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll("analysis");
},
setupController(controller, model) {
controller.set("analyses", model);
}
});
routes/analyses/show.js
的内容:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('analysis', params.analysis_id);
},
setupController(controller, model) {
controller.set("analysis", model);
}
});
当我导航到/analyses/1/dataFunctions
时,我的分析模型已加载(它在ember检查器中显示),但我似乎无法在data-functions/index.js
路径中访问它。我该怎么做?我需要分析模型在我的数据函数适配器中扩展findAll
以更改rails-api嵌套资源的url。
我尝试使用this.store.modelFor("analysis").get("id")
但是错误说get不是一个函数。
我正在使用Ember 2.0.1和Ember Data 2.0.0。我迷失在这里,任何帮助都将不胜感激。
答案 0 :(得分:1)
它返回没有找到模式,因为你在dataFunctions路由中返回一个日志语句。试一试。
export default Ember.Route.extend({
model(params) {
return this.store.findRecord("analysis", params.analysis_id)
.then( (analysis) => {
return analysis.get('dataFuncitons');
})
}
});
答案 1 :(得分:1)
好的,所以通过代码有一些问题。分析中存在拼写错误,而resetNamespace使得事情变得怪异。还删除了一些冗余路径名。
Router.map(function() {
this.route('analysis', function() {
this.route('new');
this.route('show', { path: ':analysis_id' });
this.route('edit', { path: ':analysis_id/edit'});
this.route('dataFunctions', { path: ':analysis_id/dataFunctions'}, function() {
this.route('new');
});
});
});
将dataFunctions模型重命名为data-function以反映适当的约定,例如使用单数和dasherizing。
分析模型
export default DS.Model.extend({
name: DS.attr('string'),
dataFunctions: DS.hasMany('data-function', {async: true}),
});
数据功能模型
export default DS.Model.extend({
name: DS.attr('string'),
analysis: DS.belongsTo('analysis', {async: true})
});