2014-09-30 4 views
2

Я пытаюсь использовать ng-table, но застрял с ngTableParams. Я продолжаю получатьОшибка: «undefined» не является конструктором (оценка «new ngTableParams»)

[Error] Error: 'undefined' is not a constructor (evaluating 'new ngTableParams') 

ошибка, независимо от того, что я стараюсь.

текущий код выглядит

$scope.tableParams = new ngTableParams({ 
    page: 1, 
    count: 200, 
    sorting: { 
     name: 'asc' 
    } 
}, { 
    groupBy: 'area', 
    total: TheData.length, 
    getData: function($defer, params) { 
     // use build-in angular filter 
     var orderedData = params.sorting() ? $filter('orderBy')(TheData, params.orderBy()) : TheData; 
     $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
    } 
}); 

приложение и контроллер вызываются с ngTable и ngTableParams:

angular.module('MegaList', ['ui.bootstrap', 'ngTable']); 
angular.module('MegaList').controller('DisplayMegaList', ['$scope', 'ngTableParams', function($scope, $http, ngTableParams) { 
    ... 
} 

Я думаю, что я уже перепробовал все способы, чтобы составить 'ngTable', 'ngTableParams' и ngTableParams ключевые слова вместе, но это все еще просто не работает.

Что следует попробовать?

ответ

3

Это потому, что вам не хватает параметра. Все должны соответствовать, а

angular.module('MegaList') 
     .controller('DisplayMegaList', ['$scope', '$http', 'ngTableParams', function($scope, $http, ngTableParams) 
+2

Фактически, заказ связанных с аргументами, то есть '['$ scope', 'ngTableParams', function ($ scope, ngTableParams, $ http) {}]' –

-1

Похоже, вы создаете контроллер на другом модуле. Попробуйте использовать MegaList.controller(...) вместо FloristList.controller(...).

+0

Это не так, я просто неправильно набранный код. Модуль все тот же. В разделе описания этого вопроса я немного переписал код, чтобы избежать ненужных переменных, поэтому теперь ясно, что все происходит в одном модуле. –

+0

Похоже, теперь у вас есть неравное количество параметров. попробуйте: 'angular.module ('MegaList'). controller ('DisplayMegaList', ['$ scope', '$ http', 'ngTableParams', функция ($ scope, $ http, ngTableParams)' –

-1

У меня была аналогичная проблема, и просто скопировать beforeEach из этого образца помог мне: https://docs.angularjs.org/guide/unit-testing

beforeEach(inject(function(_$controller_){ 
    // The injector unwraps the underscores (_) from around the parameter names when matching 
    $controller = _$controller_; 
}));