直接アクセス/documents/new/1
は問題なく機能しますが、レコードから来る場合、/documents/select
Ember が 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
record
すでにそこにロードされているため、選択ルートから来るときに呼び出されることはありません。この動作に関する情報をいくつか見つけましたが、私の状況には役立ちませんhttps://stackoverflow.com/a/14591851/555240
更新:
テンプレート
アプリケーション.ハンドルバー
<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>
新しいハンドルバー
{{ 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>