免责声明:
我以前从未听说过 jqGrid。
我没有太多的 jQuery 经验。
据我所知,它的 API 不利于 Angular 的数据绑定方式与手动操作的一对一映射。
这就是我想出的。这是一个基本示例,说明如何使用 Angular 指令包装这个(或任何可能的)jQuery 插件:
http://plnkr.co/edit/50dagqDV2hWE2UxG9Zjo?p=preview
让我知道您是否需要帮助包装 jqGrid API 的特定部分。
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]);
}
});
}
};
});