Mam rozszerzenie do Tridion 2011 Content Manager Explorer, gdzie chcę wykonać określony fragment JavaScript tylko dla określonego widoku.Jak obsłużyć ładowanie widoku w CMX Tridion
zrobić to z następującego fragmentu javascript:
var onDisplayStarted = function() {
$evt.removeEventHandler($display, "start", onDisplayStarted);
if ($display.getView().getId() == "PublishPopup") {
...
}
};
$evt.addEventHandler($display, "start", onDisplayStarted);
Ten kod działa dobrze w przeszłości, i to z pewnością wyzwala gdy PublishPopup
otwiera i zapewnia mój kod wykonywany tylko w tym konkretnym widzenia.
Ale niestety czasami pojawia się następujący komunikat o błędzie w konsoli JavaScript podczas ładowania DashboardView
:
Uncaught TypeError: Object # has no method 'getId'
Błąd nie powoduje żadnych problemów, najprawdopodobniej ponieważ błędy obsługi zdarzeń są prawidłowo obsługiwane przez Tridion użytkownika Struktura interfejsu użytkownika. Ale nadal wolałbym nie wyświetlać błędu w konsoli JavaScript.
rozumiem w jaki sposób wykryć, czy istnieje metoda getId
:
if ($display.getView().getId && $display.getView().getId() == "PublishPopup") {
Ale to tylko oznaczać, że kod nie wykonuje kiedykolwiek. I chociaż wydaje się, że teraz działa dobrze w wersji PublishPopup
, wolałbym znać właściwy sposób obsługi tego typu sekwencji "mój kod powinien być wykonywany po inicjalizacji widoku".
Czy ktoś wie lepszy sposób radzenia sobie z tym?
Dzięki za odpowiedź Borysa. Istnienie dwóch poglądów w istocie całkowicie wyjaśnia zachowanie, które widzę. Oznacza to również, że mogę bezpiecznie zignorować widok Tridion Dashboard. Ale ty (i John) masz rację, podział skryptu na dwa pliki byłby jeszcze lepszy. –