2016-11-29 4 views
0

Я пытаюсь использовать ng-table в приложении Angular 1.5 и столкнулся с проблемой, которую я не могу исправить. Использование базовой установки отсюда (с небольшими изменениями, как мое приложение имеет различный набор компонентов вверх), я получаю ту же ошибку:ng-table: Аргумент «controller» не является функцией, получил объект

Error: [ng:areq] Argument 'MyTableController' is not a function, got Object

Мой код это ниже. Любая помощь приветствуется.

table.controller.js

import 'ng-table'; 

class MyTableController { 
    constructor(NgTableParams) { 
     var data = [ 
      { name: "Moroni", age: 50 }, 
      { name: "Enos", age: 34 } 
     ]; 

     this.tableParams = new NgTableParams({}, { 
      dataset: data 
     }); 
    } 
} 

MyTableController.$inject = ['NgTableParams']; 

table.routes.js

routes.$inject = ['$stateProvider']; 

export default function routes($stateProvider) { 
    $stateProvider 
    .state('table', { 
     url: '/data', 
     template: require('./table.html'), 
     controller: 'MyTableController', 
     controllerAs: 'table' 
    }); 
} 

index.js

import angular from 'angular'; 
import uirouter from 'angular-ui-router'; 

import './table.css'; 

import routing from './table.routes'; 
import MyTableController from './table.controller'; 
// import mainTable from './mainTable.service'; 
// Import other dashboard services here 

export default angular.module('app.table', [uirouter]) 
    .config(routing) 
    .controller('MyTableController', MyTableController) 
    .name; 

app.js

// import angular and ui-router 
import angular from 'angular'; 
import { ngTable } from 'ng-table'; 
import uirouter from 'angular-ui-router'; 

// import CSS and bootstrap 
import './app.css'; 
import 'bootstrap/dist/css/bootstrap.css'; 
// import 'font-awesome/css/font-awesome.css'; 

// import NavBar 
import Components from './components'; 

// import config file and modules here 
import routing from './app.config'; 
import home from './features/home'; 
import facility from './features/facility'; 
import dashboard from './features/dashboard'; 
import table from './features/data-tables'; 

angular.module('app', [ngTable.name, uirouter, home, facility, dashboard, table, Components]) 
    .config(routing); 

table.html

<table ng-table="$ctrl.tableParams" show-filter="true" class="table table-condensed table-bordered"> 
    <tr ng-repeat="user in $data"> 
     <td data-title="'Name'" header-class="'text-left'" sortable="'name'" filter="{ 'name': 'text' }"> 
      {{user.name}} 
     </td> 
     <td data-title="'Age'" header-class="'text-right'" sortable="'age'" filter="{ 'age': 'text' }"> 
      {{user.age}} 
     </td> 
    </tr> 
</table> 
+0

Вы не экспортируете свой класс MyTableController в файл table.controller.js. Может, в этом и проблема. – Robba

+0

О, ну это глупое раздражение. Это была проблема. Спасибо, что заметили мое глупое упущение. –

+0

Не беспокойтесь, иногда все, что вам нужно, это вторая пара глаз :) – Robba

ответ

0

Благодаря Robba за указание моей глупости в не экспортирующих мой контроллер правильно.