Mam funkcję opisaną w jednym z moich kontrolerów. Ta funkcja zajmuje się tworzeniem formularza, którego potrzebuję użyć w różnych przypadkach, z różnych widoków. Czy jest to możliwe i jaki jest sposób wywołania tej funkcji z widoków, których potrzebuję, bez dodawania tego samego kodu do każdego kontrolera.ExtJS 4 - jak wywołać funkcję z określonego kontrolera w różnych widokach
Oto kod sterownika, gdzie staram się stosować metodę z innego kontrolera:
Ext.define('MY.controller.EventsController', {
extend: 'Ext.app.Controller',
models: [
'EventsRecord'],
stores: [
'Events'],
views: [
'EventsGrid'],
refs: [{
ref: 'EventsGrid',
selector: 'CalendarEvent'
}],
init: function() {
this.control({
'CalendarEvent': {
afterEditFinish: this.askForNotify,
deleteEvent: this.deleteEvent,
calendarEditFunc: this.calendarEditFunc,
addCalendarEvent: this.addCalendarEvent,
itemclick: this.onSelectEnableBtn
}
})
},
Tutaj staram się użyć czegoś jak var contr = Ext.getController('SomeController');
and..nothing ..
askForNotify: function(editor, e) {...
Nie można pracować z 'getController', aby wywołać funkcję? Próbowałem już z' Ext.getC ontroller ('name') 'i' this.getController ('name') i oba dały mi błąd "getController nie jest funkcją", ale pomyślałem, że to jest właściwa droga. – Leron
getController jest metodą z klasy Ext.app.Controller, więc musisz mieć odwołanie do kontrolera obecnego widoku - co jest znowu myślę przeciwko MVC :) – sha
W rzeczywistości pozwól mi wyjaśnić -Mam formularz dla powiadomień mailowych, które powinny być pokazywane przy różnych okazjach (z różnych widoków, różnych zdarzeń), ale formularz jest zdefiniowany w jednym kontrolerze. Co uważasz za najlepszy sposób na wdrożenie takiej rzeczy. Oczywiście skopiowanie kodu jest niewłaściwe, myślę, że powinien istnieć właściwy sposób umieszczenia kodu w jednym miejscu i używania go od wielu osób, ale nie jestem pewien co dokładnie zrobić? – Leron