我有一个使用ng-repeat的表...我希望能够允许用户使用键“ enter”(等同于keydown事件13)在表中选择一个项目。当用户单击enter时,我想要以便能够专注于特定的表格行并将变量“选择”为true。当用户第二次单击Enter时,我希望将“ selected”字段设置为false。

到目前为止,这是我有什么想法?

的HTML:

<tbody ng-model="educators">
    <tr ng-keydown="keydownevt()" tabindex="0" class="inventor-row"
        ng-repeat="ed in educators">
        <td class="inventor-col">
          <div><strong>{{ed.lastName}}, {{ed.firstName}}</strong></div>
          <div>{{ed.address}}</div>
          <div>{{ed.country}}</div>
        </td>
    </tr>
</tbody>


JS:

$scope.keydownevt = function () {
  $scope.keydownkeycode = event.keyCode;
  var selected = false;
  if (event.keyCode === 13) {
    // add focus
    return !selected;
  }
};

最佳答案

好吧,您没有显示要在其中存储所选值的位置,因此tbody标签中的ng-model确实很尴尬,请让我尝试帮助

<tr ng-keydown="keydownevt(ed)" tabindex="0" ng-class="{selected: ed.selected}" class="inventor-row" ng-repeat="ed in educators">
        <td class="inventor-col">
          <div><strong>{{ed.lastName}}, {{ed.firstName}}</strong></div>
          <div>{{ed.address}}</div>
          <div>{{ed.country}}</div>
        </td>
      </tr>

$scope.keydownevt = function (ed) {
          $scope.keydownkeycode = event.keyCode;
          var selected = ed.selected || false;
          if (event.keyCode === 13) {
            // add focus
            return !selected;
          }
      };


然后创建一个名为“ .selected”的css类,以绘制该行或其他内容

关于angularjs - 如何在angularjs中使表中的单个项目可选,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57646827/

10-10 03:17