AngularJS and jqGrid

前端 未结 3 412
执念已碎
执念已碎 2021-02-02 02:35

I\'m trying to find a simple example of integrating jqGrid with the framework of AngularJS (preferably as a directive that hosts the grid). This question was raised in SO jqGrid

相关标签:
3条回答
  • 2021-02-02 02:55

    I cannot comment, so I post it here, it is the continuity of the question.. I'm also checking your github project luacassus, if I can, I will contribute to it. Nice feature, Words Like Jared. As you said, there is an other part of the API I would like to wrappe with Angular, it is the "pager", I managed it this way :

    $scope.config = {
        ...
        rowList:[10,20,30],
        pager: '#pager2',
        sortname: 'id',
        ...
    };
    

    And this in the directive :

    link: function(scope,element,attrs){
                var table;
                scope.$watch('config', function (newValue) {
                    element.children().empty();
                    table = angular.element('<table id=\'grid2\'></table>');
                    pager = angular.element('<div id=\'pager2\' ></div>');
                    element.append(table);
                    element.append(pager);
                    $(table).jqGrid(newValue);
                });
    

    But I would like to get rid fo the ID, entered the hard way here. After that I will try to use the API like you in order to implement the cell/row/navbar editing possible. (To modify the scope data by modifying data inside the grid... if someone has already something...)

    0 讨论(0)
  • 2021-02-02 03:04

    Im currently working on a full replacement of jQgrid into Angular, im adapting backend response examples from jqGrid tables and such... it has only a few days of work so if you want to colaborate you are welcome to do so!: ngGrid

    0 讨论(0)
  • 2021-02-02 03:13

    Disclaimers:

    1. I've never heard of jqGrid before.

    2. I don't have much jQuery experience.

    3. From what I could tell its API isn't conducive to a 1-to-1 mapping of Angular's data-binding way of doing this vs. manual manipulation.

    Here's what I came up with. It's a basic example of how to wrap this (or any probably) jQuery plugin with an Angular directive:

    http://plnkr.co/edit/50dagqDV2hWE2UxG9Zjo?p=preview

    Let me know if there's a particular part of the jqGrid API you need help wrapping.

    var myApp = angular.module('myApp', []);
    
    myApp.directive('ngJqGrid', function () {
    return {
      restrict: 'E',
      scope: {
        config: '=',
        data: '=',
      },
      link: function (scope, element, attrs) {
        var table;
    
        scope.$watch('config', function (newValue) {
          element.children().empty();
          table = angular.element('<table></table>');
          element.append(table);
          $(table).jqGrid(newValue);
        });
    
        scope.$watch('data', function (newValue, oldValue) {
          var i;
          for (i = oldValue.length - 1; i >= 0; i--) {
            $(table).jqGrid('delRowData', i);
          }
          for (i = 0; i < newValue.length; i++) {
            $(table).jqGrid('addRowData', i, newValue[i]);
          }
        });
      }
    };
    });
    
    0 讨论(0)
提交回复
热议问题