Próbuję zmienić kod na ES6. Używam kątowego meteoru i tabeli ng. Przed refaktoryzacją dane są pokazane w tabeli. Jednak po refaktoryzacji do składni ES6 dane nie są już wyświetlane. Jest to urywek refactored kodu:ES6 kąt-meteor ng-table funkcja getData nie nazywana
class MyController {
constructor($scope, $reactive, NgTableParams, MyService) {
'ngInject';
$reactive(this).attach($scope);
this.subscribe('myCollection');
this.myService = MyService;
this.helpers({
items() {
return this.myService.getItems();
},
itemTableParams() {
const data = this.getReactively('items');
return new NgTableParams({
page: 1,
count: 10
}, {
total: data.length,
getData: (params) => {
// not called
}
});
}
});
}
}
class MyService {
getItems() {
return MyCollection.find({}, {
sort: {
dateCreated: -1
}
});
}
}
export default angular.module('MyModule', [angularMeteor, ngTable, MyService])
.component('MyComponent', {
myTemplate,
controllerAs: 'ctrl',
controller: MyController
})
.service('MyService', MyService);
const data
jest uzyskiwanie zaludnionych ale getData
nie nazywa uzyskiwanie. Tabela w szablonie używa wartości ctrl.itemTableParams
jako wartości atrybutu ng-table
, a jej ng-repeat
to item in $data
.
Czy ktoś ma pomysł, dlaczego funkcja getData
nie jest wywoływana? Pomoc byłaby bardzo ceniona. Dzięki!
P.S. Gdy próbuję ustawić NgTableParams
na const tableParams
, a następnie wywołać funkcję reload()
, zostanie wywołana . Ale chodzi o to, że nie renderuje danych na stole. Ustawić tabelę jako:
itemTableParams() {
const data = this.getReactively('items');
const tableParams = new NgTableParams({
page: 1,
count: 10
}, {
total: data.length,
getData: (params) => {
}
});
tableParams.reload(); // triggers the getData function
return tableParams;
}
<table ng-table="ctrl.itemTableParams">
<tr ng-repeat="item in $data track by $index">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.dateCreated}}</td>
</tr>
</table>
Podczas logowania danych w getData
, że ma w nim przedmiotów. Ale, jak powiedziałem, to nie jest renderowanie w tabeli.
Czy występują błędy w konsoli? Twoja metoda 'items' wywołuje' this.myService.getItems() ', ale usługa ma metodę' getInputs', a nie 'getItems'. Czy jest to literówka w pytaniu dotyczącym SO, czy też jest w twojej aplikacji? – noppa
@ noppa Przepraszam, to był literówka w pytaniu, a nie aplikacja. – dork