扩展第三方角度控制器

时间:2015-11-08 08:24:09

标签: javascript angularjs smart-table

我查看了questionsdocumentation以扩展第三方Angular指令。我真正需要做的是扩展第三方角度控制器。

我正在使用我的应用程序中的Smart Table库及其实现list row selection with checkboxes的建议。但是,我的应用程序需要两种类型的选择:

  1. 复选框选择,其中复选框可用于选择单行或多行(已在上面的链接中使用csSelectAll指令覆盖)
  2. 行突出显示,只能突出显示一行
  3. 我很容易根据select methodstTableController编写高亮显示功能。但我希望能够自己做到这一点而不用自己的智能表。

    我尝试了extending controllers的解决方案,但它似乎假设父控制器和子控制器存在于同一个模块中。当我尝试以下代码时:

    angular.module('myApp')
      .controller('smarterTableController', function(<required deps>) {
         $controller('smartTableController', {$scope: $scope}));
         //initialization stuff left out...
         this.highlight = function(row) {
           var rows = copyRefs(displayGetter($scope));
           var index = rows.indexOf(row);
           if (index !== -1) {
             row.isHighlighted = row.isHighlighted !== true;
             if (lastHighlighted) {
               lastHighlighted.isHighlighted = false;
             }
            lastHighlighted = row.isHighlighted === true ? row : undefined;
          }
        };
      });
      //corresponding extension of the stTable directive to use the smarterTableController
    

    此解决方案似乎不起作用。当我使用$controller调用父控制器的函数时,我收到错误:

    Argument 'smartTableController' is not a function, got undefined

    以下是我的两个问题:

    1. 我能以这种方式扩展第三方控制器吗?
    2. 如果没有,是分支项目并添加额外的功能我唯一的选择吗?

1 个答案:

答案 0 :(得分:0)

我认为您应该使用require参数创建自定义指令。

在这里查看文档:{​​{3}}

angular.module('myApp').directive("smarterTable", function(){
    return {
        require:"smartTable",
        link: function(arg1, arg2, arg3, smartTableController){
             // Put your logic here
        }
    }


});

在您看来,您必须添加:

<smart-table smarter-table=""></smart-table>