新しいドキュメントを作成し、既存のドキュメントのコピーを作成するルートがあります。
App.DocumentsNewRoute = Ember.Route.extend({
model: function (params) {
this.modelParams = params; // save params for reference
return App.Document.createRecord();
},
setupController: function (controller, model) {
// use the params to get our reference document
var documentModel = App.Document.find(this.modelParams.document_id);
documentModel.one('didLoad', function () {
// once loaded, make a serialized copy
var documentObj = documentModel.serialize();
// and set the properties to our empty record
model.setProperties(documentObj);
console.log('didLoad');
});
}
});
ビューにいくつかのログを追加しました。
App.DocumentView = Ember.View.extend({
init: function () {
this._super();
// fires before the didLoad in the router
console.log('init view');
},
willInsertElement: function () {
// fires before the didLoad in the router
console.log('insert elem');
}
});
そして、これが私のテンプレートです
{{#if model.isLoaded }}
{{ view App.DocumentView templateNameBinding="model.slug" class="document portrait" }}
{{ else }}
Loading...
{{/if}}
問題は、私のモデルisLoaded
がレンダリングされたときにデータが入力されていないため、この時点では templateNameBinding が存在せず、データが入力されたときに更新されないように見えることです。
テンプレートで model.isLoaded 以外のものを使用する必要がありますか、それともテンプレートの再レンダリングを強制する必要がありますか? もしそうなら、どのように、どこで? ありがとう!