2013-03-11 55 views
0

我有一個有點問題與Ember.JS應用我的建築:兩個Ember.JS數組控制器?

App.userController = Ember.ArrayController.create({ 
     content: [], 

     init: function() { 
      this.set('content', []); 
      this.refresh(); 
     }, 

     refresh: function() { 
      //Refresh Action 
     } 
    }); 

    App.supplierController = Ember.ArrayController.create({ 
     content: [], 

     init: function() { 
      this.set('content', []); 
      this.refresh(); 
     }, 

     refresh: function() { 
      //Refresh Action 
     } 
    }); 

    <h1>Users</h1> 
    {{#each user in App.userController}} 
     {{user.name}} - {{user.age}} 
    {{/each}} 

    <h1>Suppliers</h1> 
    {{#each supplier in App.supplierController}} 
     {{supplier.name}} - {{supplier.revenue}} 
    {{/each}} 

它的工作原理......但用戶都顯示在同一個列表作爲供應商?如果我移除供應商控制器,它們顯示在正確的位置。我認爲這是與兩個Ember.ArrayController實例有關,但我不確定。它顯示是這樣的:

Users 
----------- 
Suppliers 
----------- 
User 1 - 
User 2 - 
Supplier 1 - £100 

當它應該是這樣顯示:

Users 
----------- 
User 1 - 30 
User 2 - 25 

Suppliers 
----------- 
Supplier 1 - £100 

回答

1

您的代碼似乎罰款。有兩個ArrayController的實例沒有任何問題。我根據你的問題製作了一個jsbin,並在正確的地方看到用戶/供應商。看看這裏:http://jsbin.com/ovitak/1/edit

因爲你的例子並沒有說明如何正在加載的數據,我實現了刷新()方法來填充根據您的預計輸出的用戶/供應商名單:

App = Ember.Application.create({}); 

App.userController = Ember.ArrayController.create({ 
    content: [], 

    init: function() { 
     this.set('content', []); 
     this.refresh(); 
    }, 

    refresh: function() { 
     this.addObject({name: 'u 1', age: 22}); 
     this.addObject({name: 'u 2', age: 35}); 
    } 
}); 

App.supplierController = Ember.ArrayController.create({ 
    content: [], 

    init: function() { 
     this.set('content', []); 
     this.refresh(); 
    }, 

    refresh: function() { 
     //Refresh Action 
     this.addObject({name: 'supplier 1', revenue: 200}); 
    } 
}); 
+0

另外你可能想使用Ember.ArrayController.extend()而不是Ember.ArrayController.create(); – Rudi 2013-03-11 15:13:27

+0

謝謝!我發現了這個問題。我有一個名爲'me'的變量在刷新時聲明。它沒有被正確地聲明,所以我猜測這兩個控制器引用了同樣的'me',從而將一個對象推向同一個東西。 – andy 2013-03-11 15:27:45