javascript - 带有 Angular 1.5.8 的智能表 - 行选择不起作用 - 范围未填写

标签 javascript angularjs smart-table

我决定合并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过滤和排序工作正常,只有行选择不行。

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

最佳答案

您需要在 st-select-row 中使用与您在 ng-repeat 中使用的相同引用,从您的代码笔中,您正在执行以下操作:

 <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/

相关文章:

javascript - 如何从列表中清除选定的元素

javascript - 为什么单击按钮两次 setInterval 方法比声明的时间短

javascript - AngularJS:ng-hide 不起作用

javascript - 在 AngularJS 中使用简单数组在选择中设置默认值

javascript - Angularjs int 过滤器在智能表中没有正确排序

javascript - 在Vue.js中调整元素大小时如何触发事件?

javascript - Android 上的 HTML 地理定位不提示

c# - CORS 实现显示 POST 请求不允许的方法

javascript - Angular 智能表不起作用

javascript - 我如何动态填充 Ang2-smart-table 的列 Angular 4