我决定将https://lorenzofox3.github.io/smart-table-website/合并到我的应用程序中。该站点上的示例运行正常,但是,当我开始集成时,无法进行行选择功能。

我和演示站点之间的主要区别是我使用的是Angular 1.5.8。我调试并确定了片段,这使我感到怀疑:

ng.module('smart-table')
  .directive('stSelectRow', ['stConfig', function (stConfig) {
    return {
      restrict: 'A',
      require: '^stTable',
      scope: {
        row: '=stSelectRow'
      },
      link: function (scope, element, attr, ctrl) {
        var mode = attr.stSelectMode || stConfig.select.mode;
        element.bind('click', function () {
          scope.$apply(function () {
            ctrl.select(scope.row, mode);
          });
        });

        scope.$watch('row.isSelected', function (newValue) {
          if (newValue === true) {
            element.addClass(stConfig.select.selectedClass);
          } else {
            element.removeClass(stConfig.select.selectedClass);
          }
        });
      }
    };
  }]);


函数link接收scope对象,其中row是未定义的,因此select函数将跳过,并且该行不执行任何操作。

我已经在笔上复制了该问题:http://codepen.io/anon/pen/bwJqBw过滤器和排序工作正常,只有行选择无效。

我该如何解决该问题,原因是什么?范围绑定的语法是否已更改?根据文档,这似乎还可以,但是作为一个有经验的新手,我很难断言。

最佳答案

您需要在st-select行中使用与ng-repeat中使用的相同的引用,从您的codepen中进行操作:

 <tr st-select-row="row" st-select-mode="multiple" ng-repeat="customer in displayedCustomers">


您应该这样做:

<tr st-select-row="customer" st-select-mode="multiple" ng-repeat="customer in displayedCustomers">

关于javascript - Angular 为1.5.8的智能表-行选择不起作用-范围未填写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40264362/

10-10 12:40