Ember-Table с адаптер за приспособление

Опитвам се да заредя ember таблица с помощта на Ember-Data и Fixtures. Виждам генерираните редове в таблицата, но те са празни. Имайте предвид, че той генерира правилния брой редове, просто не показва данни. Ако вместо това използвам масив, всичко работи правилно. Освен това, ако премахна таблицата и просто направя {{#each}}, данните също се показват добре. Всякакви идеи ще са добре дошли! Благодаря

ето html:

    <div class="table-container">
        {{table-component
        hasFooter=false
        columnsBinding="columns"
        contentBinding="content"}}
    </div>

А ето и контролера:

App.CustomersController = Ember.ArrayController.extend({
    numRows: 1,
    columns: function() {
    var nameColumn, typeColumn, phoneColumn, identifierColumn;
    nameColumn = Ember.Table.ColumnDefinition.create({
        columnWidth: 150,
        textAlign: 'text-align-left',
        headerCellName: 'Name',
        getCellContent: function (row) {
            return row.name;
        }

    });
    typeColumn = Ember.Table.ColumnDefinition.create({
        columnWidth: 150,
        textAlign: 'text-align-left',
        headerCellName: 'Type',
        getCellContent: function (row) {
            return row.type;
        }

    });
    phoneColumn = Ember.Table.ColumnDefinition.create({
        columnWidth: 100,
        textAlign: 'text-align-left',
        headerCellName: 'Phone',
        getCellContent: function (row) {
            return row.phone;
        }

    });
    identifierColumn = Ember.Table.ColumnDefinition.create({
        columnWidth: 150,
        textAlign: 'text-align-left',
        headerCellName: 'ID',
        getCellContent: function (row) {
            return row.identifier;
        }

    });
    console.log('in columns func');
    console.log(this.get('content'));
    return [nameColumn, typeColumn, phoneColumn, identifierColumn];
}.property(),

content: function() {
    /*var temp= [
        {
            id: 1,
            name: 'Seller',
            type: 'Supermarket',
            phone: '1-800-Sell',
            identifier: '12345'
        },
        {
            id: 2,
            name: 'Sell',
            type: 'Supermarket',
            phone: '1-800-Sell2',
            identifier: '12356'
        }];
    return temp;*/

return this.store.toArray
    }.property('numRows')
});

(обърнете внимание на коментирания масив, който работи, също е включен по-горе)

И моделът:

App.Customers = DS.Model.extend({
name: DS.attr('string'),
type: DS.attr('string'),
phone: DS.attr('string'),
identifier: DS.attr('string')
});

person camba1    schedule 25.04.2014    source източник


Отговори (1)


Когато използвате масив, обектите се превръщат в реални обекти, вместо да бъдат Ember.Object. Трябва да можете да използвате:

getCellContent: function (row) {
  return row.get('name');
}    

За да изберете правилно данните на всеки ред.

person drapergeek    schedule 27.04.2014
comment
Благодаря за подсказката! така че, бих ли използвал това вместо свойството съдържание? или да използвате това, за да попълните масив в свойството съдържание? - person camba1; 29.04.2014
comment
В този случай row всъщност се извиква за всеки ред във вашето съдържание. Така че все още трябва да предоставяте съдържание, но ако съдържанието ви е обекти на жар, ще трябва да използвате функцията get за всеки от тях. - person drapergeek; 30.04.2014