2014-09-28 4 views
1

Я пытаюсь использовать ngTable в моем проекте, мы переносим js logic class-like (на самом деле это получается из coffescript, но я работаю с сгенерированным js), источником выглядит так: https://gist.github.com/orlybg/1531df6684f814f9a6f0.Пытаясь использовать угловой ngTable в классном javascript

Я пытаюсь адаптировать http://bazalt-cms.com/ng-table/example/3 к моему проекту.

Стол сам по себе генерируется/отрисовывается, что я пытаюсь знать, это сортировка данных по возрастанию/сортировке при нажатии на заголовки. Мне даже не нужна разбивка на страницы.

this.$scope.tableParams = new this.ngTableParams({ 
    page: 1,   // show first page 
    count: 10,   // count per page 
    sorting: { 
     name: 'id'  // initial sorting 
    } 
}, { 
total: this.pools.length, // length of data 
    getData: this.getData(this.$q, params) 
}); 

Последняя ошибка я получаю после многих тонкой настройки является: ReferenceError: Титулы не определен из фрагмента кода выше, поэтому мне интересно, где ngTable PARAMS приходит и как я могу получить и передать его к моему этому в MyController.prototype.getData = function ($ defer, params).

Что вы, ребята, из подхода, возможно ли это, или я ухожу?

Спасибо!

ответ

1

Вы связываете свойство getData с результатом функции, а не с самой функцией.

getData: function($defer, params) { 
    return ... 
} 

В зависимости от вашего знакомства с JavaScript, из могут подумать, чтобы сделать

getData: function ($defer, params) { 
    return this.getData(this.$q, params); 
} 

Но это не будет работать, потому что JavaScript выбрасывает this внутри объявлений функций. Вы можете сделать

getData: this.getData.bind(this); 

, которые не могут работать со старыми браузерами, или вы можете сделать

var that = this; 

, прежде чем начать создавать Params, а затем сделать

getData: function ($defer, params) { 
    return that.getData(that.$q, params); 
} 

Хотя я m не уверен, почему вы используете это. $ q, поскольку в приведенном примере не используются какие-либо операции async. Вместо этого вы должны использовать аргумент $ defer. $ Q, а затем вызывать $ defer.resolve (yourData) в конце вашей функции.

+0

Большое спасибо, я использовал подход «this = this», также я изменил $ q на $ defer, еще одна вещь, которую мне пришлось изменить, была в шаблоне, в котором я не использовал $ data, но свою собственную переменную, это почему ничего не случилось, но хорошо, что это сортировка сейчас, а затем посмотреть, что еще может сделать для меня, еще раз спасибо! – orlybg

+0

Конечно! Счастливые скрипты! –