javascript - 使 ng-click 与 jqGrid 列格式化程序功能一起使用

标签 javascript jquery angularjs jqgrid

我正在构建一个 AngularJS 应用程序,其中使用 jqGrid 来显示建筑物列表。每行包含有关该建筑物的信息以及两个按钮。

  • 链接到详细信息屏幕的编辑按钮
  • 删除按钮,用于从后端数据库中删除建筑物。

我的目标是通过使用 jqGrid 配置对象上的 formatter 回调将这些按钮添加到网格中,该回调将传递给 jqGrid 指令。

我遇到的问题是我似乎无法让 ng-click 绑定(bind)来调用我分配给它的函数。

我创建了一个 plunker 来演示我的问题。 http://plnkr.co/edit/2UDdNjfwCLauhlw1z3oL?p=preview

如何让此 ng-click 绑定(bind)按预期工作?

最佳答案

任何注入(inject)到 AngularJS 元素中的新元素,都需要使用 $compile 服务进行编译。编译 Angular Directive(指令)和范围变量绑定(bind)后将起作用。我建议您在 jqgridloadComplete 事件上编译表格,因为当 jqgrid 完全渲染时调用此事件,并且还替换$.extendangular.extend 将使代码以 Angular 方式更具可读性。 Pager 元素在附加 DOM 之前也应该经过编译周期。

指令(链接函数)

link: function(scope, element, attrs) {
    scope.$watch('config', function(newValue) {
        element.children().empty();
        var table = angular.element('<table id="' + newValue.id + '"></table>');
        element.append($compile(table)(scope));
        angular.extend(newValue, {
            jsonReader: {
                root: 'Rows',
                page: 'Page',
                total: 'Total',
                records: 'Records',
                repeatitems: false
            },
            viewrecords: true,
            rowNum: 15,
            loadComplete: function() {
                //compiling DOM after table load
                $compile(angular.element('#' + newValue.id))(scope);
            },
            rowList: [15, 30, 50],
            altRows: true
        });
        if (newValue.pager) {
            var pager = angular.element('<div id="' + newValue.pager + '"></table>');
            element.append($compile(pager)(scope));
            angular.extend(newValue, {
                pager: '#' + newValue.pager,
                pagerpos: "center",
                recordpos: "right",
                pgbuttons: true,
                pginput: true
            });
        }
        angular.element(table).jqGrid(newValue);
    });
}

Working Plunkr

希望这对您有帮助,还有什么需要可以随时问我,谢谢。

关于javascript - 使 ng-click 与 jqGrid 列格式化程序功能一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29359770/

相关文章:

javascript - jQuery : fire callback only once

jquery - 如何在鼠标单击时重复旋转变换?

javascript - Youtube:提高页面加载速度(Greasemonkey/jQuery)

javascript - 将 C# 模型从 View 传递到 Javascript

javascript - 重置表单元素而不重新加载页面

AngularJS - 表单验证的指令范围问题

javascript - 让 AngularJS 将依赖项注入(inject)对象,就像它已经为 Controller 所做的那样

javascript - 具有来自 sessionStorage 的值的切换按钮

javascript - 对预建表实现属性

javascript - 聚焦任何类型元素的最佳方式