2012-07-13 84 views
0

我有一個奇怪的錯誤,導致我撓我的頭。ember.js嵌入內容的奇怪行爲

我有一個Ember.State其中I每次進入它時新了的控制器:

show: Ember.State.extend({ 
    enter: function(manager, transition) { 
     this._super(manager, transition); 

     var contact = App.store.find(App.Contact, App.appController.get('params')); 

     App.set('selectedContactController', App.SelectedContactController.create({})); 

     //TODO: Why do I have to do this when I have just called create? 
     if(App.getPath('selectedContactController.content') && App.getPath('selectedContactController.content.length') > 0){ 
     App.setPath('selectedContactController.content', Ember.A()); 
     } 

在代碼的另一部分,我設置控制器的內容,以對從數據加載的陣列商店。

我在上面寫了一條評論,我正在寫這個問題。即使我打電話創建,我也必須清除內容集合。這讓我感到困惑。

的SelectedContactController看起來是這樣的:

App.SelectedContactController = Ember.ArrayProxy.extend(App.FeedScroller, { 

內容屬性來自App.FeedScroller混入看起來像這樣:

App.FeedScroller = Ember.Mixin.create(Ember.Evented, { 
    content: Ember.A(), 

有誰知道爲什麼內容屬性不被摧毀何時創建({})?

回答

0

當你這樣做:

App.SelectedContactController.create({})

你還在繼承的默認屬性,其中一些來自於原型鏈中的混入。

如果你不想在你創建實例的默認屬性,你必須明確他們通過爲

App.SelectedContactController.create({內容:空})

看看這個的jsfiddle:http://jsfiddle.net/lifeinafolder/ag2Nb/

希望這有助於。