繁体   English   中英

将onclick / ng-click事件附加到网格数据绑定事件中的元素

[英]attach onclick/ng-click event to element in grid databound event

我有一个TypeCtrl ES6类角度控制器,它使用kendo datagrid指令,并且具有用于网格配置选项的模板,在网格的模板中,我需要从TypeCtrl类调用方法。 我需要将onclick或ng-click事件附加到模板行中的范围。 但是,单击时需要触发的函数属于TypeCtrl类。 我如何在kendo网格的数据绑定事件中获取TypeCtrl的上下文。 我看到“ this”指向这里的剑道网格,

这是我所拥有的,请让我知道如何在数据绑定事件中访问控制器方法

//Grid options defined in Class TypeCTrl along with openSub method

    class TypeCtrl{
        constructor() {}
        $onInit() {
            this.gridOptions = {
            name: 'test',
            dataBound: function(e) {
                //Find the span and on click , attach the typectrl controller's opensub method
                let grid = this
                let item = grid.tbody.find('#testClick');
                let value = item.innerHTML;
                item.on('click', this.openSub(value);

            }
            columns: [{
                    field: 'subscriptionName',
                    hidden: true,
                    groupHeaderTemplate: function(dataItem) {
                        let temp;
                        let sname = dataItem.value;
                        if (sname) {
                            temp = '<span id="testClick">' + sname + '</span>';
                        }
                        return temp;
                    }.bind(this)
                }, {
                    field: 'name',//Todo: show icons
                    title: 'name'
                }, {
                    field: 'version',
                    title: 'version'
                }]
            }
        }

            openSub(name) {
                alert('thisis a box');
            }
        }

        TypeCtrl.$inject = ['$scope'];

    angular.module('core').controller('TypeCtrl', TypeCtrl);

    export default TypeCtrl;

我看到当我单击span标签时,它的上下文丢失了,并且未调用opensub方法。 单击行模板时,我想进入opensub方法,我可以在dataBound函数中这样做吗?

或其他方式?

常用的方法是使用组件构建AngularJS应用。 如果创建包含网格的组件,则可以从模板中调用openSub()方法: ng-click="$ctrl.openSub()" 在这种情况下, this方法将指向TypeCtrl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM