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 фактически вызывается для каждой строки вашего контента. Таким образом, вам все равно нужно предоставлять контент, но если ваш контент представляет собой объекты ember, вам нужно будет использовать функцию get для каждого из них. - person drapergeek; 30.04.2014