2016-06-07 10 views
0

Ich habe folgende columnDefs für meine AngularJS ui Raster:Handhabung AngularJS ui Rasterzelle Vorlage ng-Klick-Funktion für var ctrl = Diese Syntax in der Steuerung

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' 
     } ] 

und ich habe

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

Alles, was ich tun muss, ist, auf ng-klicken Sie auf eine Zelle, die ich eine Funktion aufrufen muss. Ähnlich ClicMe um http://ui-grid.info/docs/#/tutorial/305_appScope. Auf der offiziellen Website ist diese Funktion mit $scope angegeben, aber in meinem Controller verwende ich var ctrl = this; Syntax. Vielleicht ist das der Grund, auch wenn ich ng-click="grid.appScope.gotoRequiredState()"> gegeben habe, wird die gotoRequiredState() Funktion nicht aufgerufen. Also habe ich es auf ng-click="ctrl.grid.appScope.gotoRequiredState()"> geändert aber immer noch kein Glück. Auch nachdem ich firstName Zelle geklickt habe, wird die gotoRequiredState() Funktion nicht aufgerufen. Kann mir jemand helfen, das zu beheben?

Antwort

0

In der Dokumentation, die Sie freigegeben haben, nehme ich an, dass appScope der übergeordnete Bereich der Rasterrichtlinie ist.

Wenn das der Fall ist, könnten Sie

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

+0

Ich habe das auch versucht, aber es funktioniert auch nicht –

1

Im Folgenden hat das Problem gelöst:

ctrl.temporaryRegGridOptions.appScopeProvider = ctrl; 

mit

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

funktioniert gut. mit

sonst einfach:

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

funktioniert ohne ctrl zu appScopeProvider zuweisen. Übrigens benutze ich Angularjs 1.5 + Komponenten Architektur.