ここで、RootView は初期ビューを描画し、BranchObj を作成します。これは、その init 関数で RootView の branchView を探し、別のビューをそれに貼り付けようとします。
問題は、行 1 (コンソールが「1」をログに記録する) が行 2 (コンソールに「2」をログに記録する) の前に書き込まれているにもかかわらず、コンソールが「1」の前に「2」をログに記録することです。エラーは、BranchObj が探しているビューを RootView の branchView で見つけることができないためです。
2 つの関数を正しい順序で実行するにはどうすればよいですか?
App.RootView = Ember.CollectionView.extend({
...
didInsertElement: function() {
//draw this branch
var branchView = App.BranchView.create();
this.set("branchView",branchView);
this.get("childViews").pushObject(branchView); //Line 1
//draw a child
App.BrachObj.create({parentView:this}); //Line 2
}
});
App.BranchView = App.RaphaelView.extend({
didInsertElement: function() {
console.log(1);
},
...
});
App.BranchObj = Ember.Object.extend({
init: function() {
console.log(2);
},
...
});