Angularjs 指令中的角度数据表。withFnServerData()中不能调用函数

Angularjs 指令中的角度数据表。withFnServerData()中不能调用函数,angularjs,datatables,server-side,angular-datatables,Angularjs,Datatables,Server Side,Angular Datatables,我有一个关于在角度指令中调用函数的问题。下面是我的指令,我想在其中封装来自控制器的代码。我从控制器中获得URL和列。dtOptions在指令中设置 到目前为止,这种方法仍然有效,并且出现了表格。问题是DTOptionsBuilder没有调用函数serverData。当我在FnServerData(serverData())中添加括号时,将调用该方法,但未定义参数。当在控制器中定义时,代码可以工作 你看到一种有效的方法了吗 指令 angular.module('tab') .directiv

我有一个关于在角度指令中调用函数的问题。下面是我的指令,我想在其中封装来自控制器的代码。我从控制器中获得URL和列。dtOptions在指令中设置

到目前为止,这种方法仍然有效,并且出现了表格。问题是DTOptionsBuilder没有调用函数serverData。当我在FnServerData(serverData())中添加括号时,将调用该方法,但未定义参数。当在控制器中定义时,代码可以工作

你看到一种有效的方法了吗

指令

 angular.module('tab')
  .directive('tabledirective', tableDirective); 

  function tableDirective(DTOptionsBuilder, DTColumnBuilder, RESTService){


    return {
      templateUrl: '../../views/tableTemplate.html',
      restrict: 'E',
      link: function (scope, elem, attr) {   
            var dtOption;

            function serverData(sSource, aoData, fnCallback) {
                //All the parameters you need is in the aoData variable
                var draw = aoData[0].value;
                var order = aoData[2].value;
                var start = aoData[3].value;
                var length = aoData[4].value;
                var search = aoData[5].value;
                //Then just call your service to get the records from server side
                RESTService.get(scope.options.url, start, length, search, order, draw).success(function (result) {
                  var records = {
                      'draw': result.data.draw,
                      'recordsTotal': result.data.total,
                      'recordsFiltered': result.data.filtered,
                      'data': result.data.records
                  };
                  fnCallback(records);
               });
            };

          dtOption = DTOptionsBuilder
              .newOptions()
              .withFnServerData(serverData)
              .withBootstrap()
              .withDataProp('data')
              .withOption('processing', true)
              .withOption('serverSide', true)
              .withOption('paging', true)
              .withPaginationType('full_numbers')
              .withDisplayLength(10);  

          scope.options.dtoptions = dtOption;     
      }
    };
  }
控制器

angular.module('tab')
 .controller('tableCtrl', tableCtrl);

function tableCtrl(DTColumnBuilder, DTOptionsBuilder, $scope){

  $scope.options = {
      dtcolumns: [
        DTColumnBuilder.newColumn('Age', 'Alter'),
        DTColumnBuilder.newColumn('Adresse', 'Adresse'),
        DTColumnBuilder.newColumn('Name', 'Name')
      ],
      dtoptions: '',
      url: 'http://localhost:9000/api/Data/Get'
  };
}

我解决了这个问题。angular datatables已经提供了一个指令。要让Angular在作用域内呈现表,必须将元素
附加到模板中声明的某个元素

使用$compile可在范围内呈现表

  return {
  template: '<div></div>',
  restrict: 'E',
  link: function (scope, elem, attr) {   
        var dtOption;

        ...
      scope.options.dtoptions = dtOption;
      elem.append('<table datatables=""...</table>');
      $compile(elem.contents())(scope);

  }
 };
}
返回{
模板:“”,
限制:'E',
链接:函数(范围、元素、属性){
var-dtOption;
...
scope.options.dtoptions=dtOption;

elem.append(“我解决了这个问题。angular datatables已经提供了一个指令。要让angular在作用域内呈现表,必须将元素
附加到模板中声明的某个元素

使用$compile可在范围内呈现表

  return {
  template: '<div></div>',
  restrict: 'E',
  link: function (scope, elem, attr) {   
        var dtOption;

        ...
      scope.options.dtoptions = dtOption;
      elem.append('<table datatables=""...</table>');
      $compile(elem.contents())(scope);

  }
 };
}
返回{
模板:“”,
限制:'E',
链接:函数(范围、元素、属性){
var-dtOption;
...
scope.options.dtoptions=dtOption;
附加元素('