【问题标题】:AngularJS Smarttable - event on selectAngularJS Smarttable - 选择事件
【发布时间】:2015-01-20 09:46:52
【问题描述】:

有没有办法在 AngularJS 智能表中触发行选择事件?

这是其他线程中的一个主题,但仍然没有答案。

Unable to select the grid item using SmartTable in Angular JS

【问题讨论】:

标签: angularjs smart-table


【解决方案1】:

我需要此功能以便在至少选择 1 行时显示面板。我最初设置了一块手表,但觉得太贵了。

我最终在 stSelectRow 指令中添加了一个回调。

ng.module('smart-table')
  .directive('stSelectRow', function () {
    return {
      restrict: 'A',
      require: '^stTable',
      scope: {
          row: '=stSelectRow',
          callback: '&stSelected' // ADDED THIS
      },
      link: function (scope, element, attr, ctrl) {
        var mode = attr.stSelectMode || 'single';
        element.bind('click', function ($event) {
          scope.$apply(function () {
              ctrl.select(scope.row, mode, $event.shiftKey);
              scope.callback(); // AND THIS
          });
        });

        //***///
      }
    };
  });

然后我可以将一个函数从我的控制器传递给指令(注意:您可以将选定的行传回,我不需要)

tr ng-repeat="row in customerResultsTable" st-select-row="row" st-select-mode="multiple" st-selected="rowSelected()">

参考这篇文章寻求帮助Callback function inside directive attr defined in different attr

【讨论】:

  • 这可能是对智能表代码库的一个很好的补充?
  • @John 是的,应该是一个不错的 PR。感谢这个 What-About-Bob
【解决方案2】:

这是一个很容易放在Smart Table上的手表:

// fired when table rows are selected
$scope.$watch('displayedCollection', function(row) {

  if(!row) return;

  // get selected row
  row.filter(function(r) {
     if (r.isSelected) {
       console.log(r);
     }
  })
}, true);

相关的html:

<table st-table="displayedCollection" st-safe-src="rowCollection" class="select-table table">

This github issue 很有帮助。

【讨论】:

  • 这对我有用,但在页面加载时出现“错误:行未定义智能表”的​​错误。您对如何解决该错误有任何建议吗?谢谢
  • @totallytotallyamazing 不抱歉,这些天我没有做太多 Angular,所以很遗憾帮不了你。
  • 感谢您回复我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
相关资源
最近更新 更多