javascript - ng-grid 嵌入式菜单被隐藏

标签 javascript css angularjs ng-grid

我们目前正在使用 ng-grid 在网格中显示我们的数据。但是,我们现在要做的是为每一行创建一个菜单。

如果在普通表格中,这是一项简单的任务。但是,使用 ng-grid 时,我们遇到了问题,因为实际的菜单没有显示。

换句话说,它将菜单放置在单元格中,因此当它显示时,由于溢出隐藏在单元格上,我们只能看到菜单的一部分(希望有意义)

我们正在努力实现这样的目标:http://jsfiddle.net/akA6H/39/

var myApp = angular.module('myApp', ['ui.bootstrap']);

function MyCtrl($scope) {
     $scope.name = 'Superhero';
}

myApp.directive('showOnRowHover',

function () {
   return {
      link: function (scope, element, attrs) {
        element.closest('tr').bind('mouseenter', function () {
            element.show();
        });
        element.closest('tr').bind('mouseleave', function () {
            element.hide();

            var contextmenu = element.find('#contextmenu');
            contextmenu.click();

            element.parent().removeClass('open');
        });
     }
  };
})

最佳答案

您可以使用这样的单元格模板:

    $scope.gridOptions = {
    data: 'myData',
    columnDefs: [{
        field: 'name',
        displayName: 'Name'
      },
      {
        field: 'age',
        displayName: 'Age',
        cellTemplate: '<div ng-mouseover="showmenu=true" ng-mouseleave="showmenu=false" class="ngCellText">{{row.getProperty(col.field)}}' +
          '<span class="hmenu" ng-show="showmenu" ng-click=sayHello(row.entity.name)><button>click me</button></span>' +
          '</div>'
      }
    ]
    };

看看这个简化的 Plunker

更新: 呃,我忘了:如果你想让它在行上悬停,你也需要定义一个行模板并将开关放在那里并将值应用到 $parent。

    $scope.gridOptions = {
    data: 'myData',
    rowTemplate: '<div  ng-mouseover="$parent.showmenu=true" ng-mouseleave="$parent.showmenu=false" ng-style="{\'cursor\': row.cursor, \'z-index\': col.zIndex() }" ' +
      'ng-repeat="col in renderedColumns" ng-class="col.colIndex()" ' +
      'class="ngCell {{col.cellClass}}" ng-cell></div>',
    columnDefs: [{
      field: 'name',
      displayName: 'Name'
    }, {
      field: 'age',
      displayName: 'Age',
      cellTemplate: '<div class="ngCellText">{{row.getProperty(col.field)}}' +
        '<span class="hmenu" ng-show="showmenu" ng-click=sayHello(row.entity.name)><button>click me</button></span>' +
        '</div>'
    }]
    };

Updated Plunker here

关于javascript - ng-grid 嵌入式菜单被隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23384330/

相关文章:

javascript - 表格不切换选择

css - 当使用 CSS/SCSS 聚焦其中的输入时,我可以在元素之后更新父元素的样式吗?

javascript - 包括 Bootstrap 弹出窗口页脚中的预定义按钮

AngularJS 从外部 js 函数访问范围

java - 使用 Oracle、Java 和 AngularJS 构建实时数据网格的策略

angularjs - 错误类型错误 : Cannot read property 'Point' of undefined, openlayers 3 & jsts - 服务器端

javascript - jQuery 滚动到 anchor 标签时滑出一个 DIV ~

javascript - 在js加载的元素之上绘制元素

javascript - 通过参数查找node.js

html - 使用 Bootstrap 2.3 为表单留下的边距