0

ユーザーのクリックでスワップアウトされるデータの表示を処理するために ArrayController を使用しようとしています。現在、このエラーUncaught Error: Assertion Failed: The value that #each loops over must be an Array. You passed App.CurrentListControllerが発生していますが、Ember Inspector を見ると、CurrentListController が表示され、モデルとデータが含まれています。基本的に、統計ページでは一連の統計を確認でき、特定の統計をクリックするとモーダルがポップアップし、その統計に関連するすべてのレコードが表示されます。レコードを StatController に保存するだけでは問題なく動作しますが、ArrayController を使用して並べ替え/フィルター処理を行うことはできません。したがって、 CurrentListController の内容を表示しようとするときを除いて、すべて機能します。

助けや指示をありがとう。

現在のリストコントローラー:

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

StatController:

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}}
4

1 に答える 1

0

App.CurrentListController配列ではありません。これはオブジェクト、コントローラー オブジェクトです。(ところで、テンプレートでグローバルネームスペースにアクセスすることはお勧めしません[つまり、大文字を含むものを使用する])

代わりにすべきことは次のとおりです。

App.StatController = Ember.ObjectController.extend({
    needs:['currentList'],
    currentList: Ember.computed.alias('controllers.currentList.model'),
    ...

このようにして、currentList コントローラー(配列)の基礎なるモデルにアクセスし、それをテンプレートで として使用できるようにすることができますcurrentList

{{#each business in currentList}}
  ...
{{/each}}
于 2014-12-26T08:51:01.400 に答える