直接访问可以正常工作,但是由于 Ember 之前在 Select 路由中所做的查询/documents/new/1
,来自记录的访问已经可用。/documents/select
路线
this.resource('documents', function() {
this.route('new', { path: '/new/:document_id' });
this.route('show', { path: '/:document_id' });
this.route('select');
});
路线
App.DocumentsSelectRoute = Ember.Route.extend({
model: function() {
return App.Document.find({public: true});
}
});
App.DocumentsNewRoute = Ember.Route.extend({
model: function (params) {
console.log('New Model')
var originalDoc = App.Document.find(params.document_id),
newDoc = App.Document.createRecord();
originalDoc.one('didLoad', function () {
newDoc.setProperties(this.serialize());
});
return newDoc;
}
});
model
从 Select 路线来时永远不会被调用,因为record
已经在那里加载了。我找到了一些关于这种行为的信息,但这对我的情况没有帮助https://stackoverflow.com/a/14591851/555240
更新:
模板
应用程序.handlebars
<li>{{#linkTo "documents.select"}}New{{/linkTo}}</li>
select.handlebars
<ul>
{{#each doc in controller}}
<li>
{{#linkTo "documents.new" doc}}<div class="cover"></div>{{/linkTo}}
{{#linkTo "documents.new" doc}}{{doc.title}}{{/linkTo}}
</li>
{{/each}}
</ul>
新的.handlebars
{{ model }}
{{#if model.slug }}
{{ view App.DocumentView templateNameBinding="model.slug" class="document portrait" }}
{{ else }}
Loading...
{{/if}}
{{ model }}
在转换到时new.handlebars
显示<App.Document:ember340:1>
,但<App.Document:ember304:null>
在直接导航到时显示。