Javascript 在ArrayController上循环失败,因为它不是数组,即使控制器具有正确的数据模型

Javascript 在ArrayController上循环失败,因为它不是数组,即使控制器具有正确的数据模型,javascript,ember.js,ember-controllers,Javascript,Ember.js,Ember Controllers,我正在尝试使用ArrayController来处理显示一些数据,这些数据将在用户单击时交换。我目前得到了这个错误,uncaughterror:Assertion失败:每个循环所覆盖的值必须是一个数组。您通过了App.CurrentListController,但如果我查看Ember Inspector,我可以看到CurrentListController,它包含模型和数据。基本上,“统计”页面允许您查看一组统计数据,单击特定统计数据会弹出一个模式,并显示与该统计数据相关的所有记录。如果我只是将记

我正在尝试使用ArrayController来处理显示一些数据,这些数据将在用户单击时交换。我目前得到了这个错误,
uncaughterror:Assertion失败:每个循环所覆盖的值必须是一个数组。您通过了App.CurrentListController
,但如果我查看Ember Inspector,我可以看到CurrentListController,它包含模型和数据。基本上,“统计”页面允许您查看一组统计数据,单击特定统计数据会弹出一个模式,并显示与该统计数据相关的所有记录。如果我只是将记录存储在StatController上,它可以正常工作,但我无法使用ArrayController进行排序/筛选。所以,除了我尝试显示CurrentListController的内容时,它都可以正常工作

谢谢你的帮助和指导

CurrentListController:

App.CurrentListController = Ember.ArrayController.extend({
    sortProperties: ['name'], //Initial sort column.
    sortAscending: true,
});
App.StatController = Ember.ObjectController.extend({
    needs:['currentList'],
    currentList:[],

    actions: {
        viewBusiness: function(ids) {
            console.log(ids)
            var self = this
            console.log(this.get('controllers.currentList').get('sortProperties'))
            this.store.findByIds('business', ids.split(",")).then(
                function(results)
                {
                    $('#editModal').modal('show');
                    //self.set('currentList', results.sortBy(["name"]))
                    self.get('controllers.currentList').set('model', results)

                    console.log(self.get('controllers.currentList').get('arrangedContent'))
                });
        },
        sortBy: function(prop){
            var clController = this.get('controllers.currentList')
            clController.set('sortProperties', prop)
            clController.set('sortAscending', !clController.get('sortAscending'));
        }
    }
});
{{#each business in App.CurrentListController}}
  <tr {{bind-attr id=business.id}}>
    <td>{{business.name}}</td>
    <td>{{business.city}}</td>
    <td>{{business.state}}</td>
    <td>{{business.zip}}</td>
    <td class="text-center">{{business.numVendors}}{{/link-to}}</td>
    <td class="text-center">{{business.numClients}}{{/link-to}}</td>
  </tr>
{{/each}}
StatController:

App.CurrentListController = Ember.ArrayController.extend({
    sortProperties: ['name'], //Initial sort column.
    sortAscending: true,
});
App.StatController = Ember.ObjectController.extend({
    needs:['currentList'],
    currentList:[],

    actions: {
        viewBusiness: function(ids) {
            console.log(ids)
            var self = this
            console.log(this.get('controllers.currentList').get('sortProperties'))
            this.store.findByIds('business', ids.split(",")).then(
                function(results)
                {
                    $('#editModal').modal('show');
                    //self.set('currentList', results.sortBy(["name"]))
                    self.get('controllers.currentList').set('model', results)

                    console.log(self.get('controllers.currentList').get('arrangedContent'))
                });
        },
        sortBy: function(prop){
            var clController = this.get('controllers.currentList')
            clController.set('sortProperties', prop)
            clController.set('sortAscending', !clController.get('sortAscending'));
        }
    }
});
{{#each business in App.CurrentListController}}
  <tr {{bind-attr id=business.id}}>
    <td>{{business.name}}</td>
    <td>{{business.city}}</td>
    <td>{{business.state}}</td>
    <td>{{business.zip}}</td>
    <td class="text-center">{{business.numVendors}}{{/link-to}}</td>
    <td class="text-center">{{business.numClients}}{{/link-to}}</td>
  </tr>
{{/each}}
统计模板:

App.CurrentListController = Ember.ArrayController.extend({
    sortProperties: ['name'], //Initial sort column.
    sortAscending: true,
});
App.StatController = Ember.ObjectController.extend({
    needs:['currentList'],
    currentList:[],

    actions: {
        viewBusiness: function(ids) {
            console.log(ids)
            var self = this
            console.log(this.get('controllers.currentList').get('sortProperties'))
            this.store.findByIds('business', ids.split(",")).then(
                function(results)
                {
                    $('#editModal').modal('show');
                    //self.set('currentList', results.sortBy(["name"]))
                    self.get('controllers.currentList').set('model', results)

                    console.log(self.get('controllers.currentList').get('arrangedContent'))
                });
        },
        sortBy: function(prop){
            var clController = this.get('controllers.currentList')
            clController.set('sortProperties', prop)
            clController.set('sortAscending', !clController.get('sortAscending'));
        }
    }
});
{{#each business in App.CurrentListController}}
  <tr {{bind-attr id=business.id}}>
    <td>{{business.name}}</td>
    <td>{{business.city}}</td>
    <td>{{business.state}}</td>
    <td>{{business.zip}}</td>
    <td class="text-center">{{business.numVendors}}{{/link-to}}</td>
    <td class="text-center">{{business.numClients}}{{/link-to}}</td>
  </tr>
{{/each}}
{{{#App.CurrentListController中的每个业务}
{{business.name}
{{business.city}
{{business.state}
{{business.zip}
{{business.numvendos}{{{/link to}}
{{business.numClients}{{{/link to}}
{{/每个}}

应用程序。CurrentListController
不是数组。它是一个对象,一个控制器对象。(顺便说一句,不建议访问模板中的全局名称[即使用大写字母的任何内容])

你应该做的是:

App.StatController = Ember.ObjectController.extend({
    needs:['currentList'],
    currentList: Ember.computed.alias('controllers.currentList.model'),
    ...
通过这种方式,您可以访问currentList控制器的底层模型(它是一个数组),并将其作为
currentList
提供给模板

{{#each business in currentList}}
  ...
{{/each}}

啊,我想我把我读错的东西解释错了。我假设它以这种方式使用时会自动捕获控制器的底层数组。我修改了您建议的方式,事实上确实消除了错误,但排序不起作用。当我单击排序按钮时,我可以在控制器上看到sortProperties和SortScending的更改,但currentList的arrangedContent从未更改。谢谢你的帮助。Nvm我只需要做controllers.currentList.arrangedContent并用这个设置模型。get('controllers.currentList')。set('model',results)。但这不是最初问题的一部分,所以谢谢你的帮助。