Integracja z tabelą Ember z modelem Ember / danymi Ember
Próbuję połączyć ember-models z tabelą ember, aby wyciągnąć paginowane rekordy z serwera i dodać je do tabeli podczas przewijania w dół.
Mogę to uruchomić, po prostu żądając adresu URL api z numerem strony, jak w przykładzie ajax nahttp://addepar.github.io/ember-table/ ale nie mogę wymyślić, jak zintegrować go z modelem ember-model, aby tworzyć i emberować obiekty, a następnie dodawać je do tabeli.
Oto mój kod, który po prostu wykonuje żądanie ajax i dodaje do tabeli. Czy ktoś może mi powiedzieć, jak mogę to zmienić, aby zamiast tego użyć ember-model / ember-data.
App.TableAjaxExample = Ember.Namespace.create()
App.TableAjaxExample.LazyDataSource = Ember.ArrayProxy.extend
createGithubEvent: (row, event) ->
row.set 'id', event.id
row.set 'name', event.name
row.set 'isLoaded', yes
requestGithubEvent: (page) ->
content = @get 'content'
start = (page - 1) * 30
end = start + 30
per_page = 40
# something like this ???
#App.Detail.find(type: 'companies', page: page, per_page: per_page).on 'didLoad', ->
url = "http:/myurl.dev/admin/details.json?type=companies&page=#{page}&per_page=30"
Ember.$.getJSON url, (json) =>
json.details.forEach (event, index) =>
row = content[start + index]
@createGithubEvent row, event
[start...end].forEach (index) ->
content[index] = Ember.Object.create eventId: index, isLoaded: no
objectAt: (index) ->
content = @get 'content'
#if index is content.get('length') - 1
# content.pushObjects(new Array(30))
row = content[index]
return row if row and not row.get('error')
@requestGithubEvent Math.floor(index / 30 + 1)
content[index]
App.TableAjaxExample.TableController =
Ember.Table.TableController.extend
hasHeader: yes
hasFooter: no
numFixedColumns: 0
numRows: 21054
rowHeight: 35
columns: Ember.computed ->
columnNames = ['id', 'name']
columns = columnNames.map (key, index) ->
Ember.Table.ColumnDefinition.create
columnWidth: 150
headerCellName: key.w()
contentPath: key
columns
.property()
content: Ember.computed ->
App.TableAjaxExample.LazyDataSource.create
content: new Array(@get('numRows'))
.property 'numRows'
Czy jest to możliwe, czy też spowalnia to znacznie?
Dzięki za pomoc. Stóg