angularJS 및 ES6에 체인 지시문이 있으며 ui-grid를 사용하고 싶습니다. 그리드는 올바른 열과 데이터로 표시됩니다.
그러나 ng-click은 cellTemplate에서 작동하지 않습니다. 아무 반응이 없습니다. 또한 console.log (grid)로 그리드 객체를 확인하려고 시도하고 그리드가 정의되지 않았습니다.
누가 cellTemplate을 사용하여 openDetail 메서드를 호출 할 수 있습니까?
export default function ChainsDirective() {
class ChainsDirective {
/*@ngInject*/
constructor(chainsService, $state) {
this.chainsServiceLoadChains = chainsService.loadChains.bind(chainsService);
this.gridOptions = {
enableColumnMenus: false,
columnDefs: [
{
name: 'id',
visible: false
},
{
name: 'name',
displayName: 'Kette',
cellTemplate: '<div class="ui-grid-cell-contents"><a onclick="console.log(grid)" ng-click="grid.appScope.openDetail(row.entity.id)">{{row.entity.name}}</a></div>'
}
]
};
this.$stateGo = $state.go.bind($state);
this.fetch(); // best practice initiales laden in einer Funktion zu kapseln
}
/**
* @param int chainId
*/
openDetail(chainId) {
this.$stateGo('chainDetail', {chainId})
}
fetch() {
return this.chainsServiceLoadChains().then(data => {
this.gridOptions.data = data;
})
}
}
return {
restrict: 'E',
template: '<div ui-grid="chains.gridOptions" external-scopes="$scope" class="grid"></div>',
scope: {},
bindToController: {},
controller: ChainsDirective,
controllerAs: 'chains'
}
}
ui-grid 지시문을 사용한 적이 없습니다. 그러나 "controller as"구문으로 선언했기 때문에 이름으로 컨트롤러에 액세스해야하는 것 같습니다.
따라서 ng-click
이름으로 범위의 컨트롤러를 참조해야합니다 chains
.
ng-click="grid.appScope.chains.openDetail(row.entity.id)"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다