处理angularjs ui网格单元模板ng-click函数for var ctrl =控制器中的此语法

时间:2016-06-07 11:31:40

标签: angularjs angularjs-scope angular-ui angular-ui-grid

我的angularjs ui网格有以下columnDefs:

ctrl.temporaryRegGridOptions.columnDefs = [ {
            field: 'firstName',
            'displayName': 'First / Company Name',
            cellTemplate: '<span ng-click="ctrl.grid.appScope.gotoRequiredState()">{{row.entity.firstName}} </span> '
        }, {
            field: 'lastName',
            'displayName': 'Surname',
            width: '150'
        } ]

我有

ctrl.gotoRequiredState = function() {
        alert("next State");
    }

我需要做的就是,在单击一个单元格时我需要调用一个函数。类似于ClicMe http://ui-grid.info/docs/#/tutorial/305_appScope。在官方网站上,此功能由$scope提供,但在我的控制器中,我使用var ctrl = this;句法。也许这就是为什么即使我给了ng-click="grid.appScope.gotoRequiredState()">gotoRequiredState()函数也没有被调用。所以我把它改为ng-click="ctrl.grid.appScope.gotoRequiredState()">但仍然没有运气。即使我单击firstName单元格,也不会调用gotoRequiredState()函数。任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

以下解决了这个问题:

ctrl.temporaryRegGridOptions.appScopeProvider = ctrl;

cellTemplate: '<span ng-click="grid.appScope.gotoRequiredState()">{{row.entity.firstName}} </span> '

工作正常。

否则只使用:

 cellTemplate: '<span ng-click="grid.appScope.$parent.$ctrl.gotoRequiredState()">{{row.entity.firstName}} </span> '

正常运行,但未将ctrl分配给appScopeProvider。顺便说一句,我正在使用Angularjs 1.5 +组件架构。

答案 1 :(得分:0)

从您共享的文档中,我假设appScope是grid指令的父作用域。

如果是这样,你可以尝试

ng-click="grid.appScope.ctrl.gotoRequiredState()"