Ich habe eine TypeCtrl ES6-Klasse Winkel-Controller, die eine Kendodatagrid-Direktive verwendet und Vorlage für Grid-Konfigurationsoptionen hat, in der Vorlage für das Raster muss ich eine aufrufen Methode aus der TypeCtrl-Klasse. Ich muss ein onclick- oder ng-click-Ereignis an den Bereich innerhalb der Zeile der Vorlage anhängen. Die Funktion, die beim Klicken ausgelöst werden muss, gehört jedoch zur TypeCtrl-Klasse. Wie kann ich den Kontext von TypeCtrl innerhalb des datengebundenen Ereignisses des Kendo-Gitters erhalten. Ich sehe, dass „diese“ verweist auf das Kendo Gitter hieranclick/ng-click-Ereignis an Element im Raster datengebundener Event
Hier ist, was ich habe, bitte lassen Sie mich wissen, wie ich teh Controller-Methode innerhalb des Databound-Ereignis zugreifen können
//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;
Ich sehe, dass wenn ich auf den span-tag klicke, ist der kontext davon verloren und die opensub-methode wird nicht aufgerufen. Ich musste die opensub-Methode aufrufen, wenn ich auf die Zeilenvorlage geklickt habe. Kann ich das in der dataBound-Funktion tun?
oder eine andere Möglichkeit s?
Ja, da das Element dynamisch in der Vorlage generiert wird, erhält der Kontext nicht den Controller. Ich habe bereits versucht, "das" innerhalb der Vorlage zu haben. Wie auch immer, da angular nicht über "dieses" weiß – looneytunes