【问题标题】:ng-grid embeded menu is being hiddenng-grid 嵌入菜单被隐藏
【发布时间】:2016-05-02 21:21:54
【问题描述】:

我们目前正在使用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');
        });
     }
  };
})

【问题讨论】:

    标签: javascript css angularjs ng-grid


    【解决方案1】:

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

        $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

    【讨论】:

    • 并不是我们真正想要的。基本上,我们希望为每一行显示一个菜单。即我们在每一行都有一个按钮,当用户点击时,他们会看到其他选项,例如查看更多详细信息、编辑详细信息、删除详细信息等
    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多