2013-03-11 66 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