Angularjs jquery 数据表指令 - 一个视图中的多个数据表

Angularjs jquery datatables directive - multiple datatables in one view

我有以下指令,效果很好。

angular.module('myApp').directive('jqdatatable', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs, ngModelCtrl) {

            var options = {};
            if (scope.dtOptions) {
                options = scope.dtOptions;
            }
            console.log('applying data table');
            element.DataTable(options);
        }
    };
});

我这样使用这个指令:

但是当一个视图中有多个数据表时,问题就来了。 您不能设置多次 $scope.dtOptions。 似乎这种方法在这种情况下不是很有效。

如果有人知道如何集成此代码以在一个视图中处理多个数据表,那就太好了。

谢谢。

由于您的指令不在独立范围内工作,因此它实际上在控制器的范围内工作,这使得无法在同一页面上(或至少在同一控制器范围内)控制 2 个指令。

在我看来,您有两个主要选择:

  • 您可以创建第二个控制器来包装您的第二个指令(然后该控制器将有自己的范围,您可以在其中设置您的 dtOptions)

  • 您可以更改您的指令以使用隔离范围并获取在声明中传递的参数,因此您的指令看起来像

    <table jqdatatable processing="true" 
           serverSide="true" pageLength="25" 
           ajax="read_data_tables.php">
    

第二条指令可以有另一组参数。

第二个选项比 Angular 更健壮和惯用,the Angular reference 中有很好的文档。但是第一个选项会让你陷入困境(实际上在同一个参考页面上有一个例子,尽管他们指出这不是最佳实践)