我的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()
函数。任何人都可以帮我解决这个问题。
答案 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()"
?