Backbone Marionette, Composite View wird zweimal initialisiert

8
___ answer17544162 ___

Für mich wurde das behoben (nachdem ich viele Stunden lang meinen Kopf auf den Tisch geschlagen hatte), aber dafür sorgte, dass %code% vor %code% !!

deklariert wurde

Works:

%Vor%

Funktioniert nicht (init wird zweimal ohne Argumente aufgerufen):

%Vor%

Es spielt keine Rolle, ob wir eine Instanz von "MyCompView" erhalten, nachdem beide deklariert wurden. "itemView" muss deklariert werden, bevor die CompView-Ansicht aufgerufen wird.

    
___ answer24186977 ___

Für RequireJS Benutzer und / oder Benutzer Kompilieren (Minimieren) von JavaScript

Ich möchte hinzufügen, dass die uglifying -Engine beim Verkleinern (Minimieren) von JavaScript die Dinge in der falschen Reihenfolge deklariert (d. h. CompositeView und ItemView können in umgekehrter Reihenfolge wie @Thomas Hudspith-Tatham und @simbolo deklariert werden). Das Problem tritt häufiger auf, wenn Sie Ihre Backbone.Marionette mit requireJS modularisieren und den Code optimieren (kompilieren).

Leider kenne ich keine garantierte Lösung, außer dass ich den Code neu kompiliert habe, der für mich funktioniert hat.

    
___ answer21072255 ___

Ich teile meine Erfahrung. Es könnte jemandem helfen.

Ich hatte ähnliche Probleme. Bei Initial I dachte ich, dass das Ereignis zweimal ausgelöst wurde, aber in Wirklichkeit wurde es zweimal angehört, was zu einem ungewöhnlichen Anwendungsverhalten führt.

Mein Ereignis wurde einmal aus der Composite-Ansicht (ein Trigger) ausgelöst, wurde aber aufgrund zweier Instanzen des Contact-Controllers zweimal angehört (2).

Ich habe behoben, indem ich sicherstelle, dass ich nur einen Listener (eine Controller-Instanz) für ein bestimmtes Verhalten habe (in meinem Fall öffne ich einen Bearbeitungsdialog).

Hinweis. Ich habe mehrere Controller in meiner Anwendung und ich laden mit erfordern.

    
___ qstnhdr ___ Backbone Marionette, Composite View wird zweimal initialisiert ___ tag123backbonejs ___ Backbone.js ist ein JavaScript-Framework mit einer RESTful JSON-Schnittstelle und basiert auf dem MVP-Design (Model-View-Presenter) ___ tag123marionette ___ Backbone.Marionette ist eine zusammengesetzte Anwendungsbibliothek für Backbone.js, die die Konstruktion von JavaScript-Anwendungen in großem Maßstab vereinfachen soll. Verwenden Sie dieses Tag NICHT für den Marionette-Treiber von Firefox. Verwenden Sie stattdessen das firefox-marionette-Tag. ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ tag123backboneviews ___ Ansichten in der Backbone.js-Bibliothek. Backbone-Ansichten werden verwendet, um zu widerspiegeln, wie die Datenmodelle Ihrer Anwendungen aussehen. Sie werden auch verwendet, um Ereignisse zu hören und entsprechend zu reagieren. ___ answer16786318 ___

Danke für die obige Erklärung.

Ich hatte das gleiche Problem. Wenn in der Ansicht "Composite" keine itemView definiert ist, ruft sie bei jedem Ändern der Auflistung ihre Initialize-Funktion auf.

Ich habe das behoben, indem ich eine leere Ansicht als Elementansicht verwendet habe.

(Ich habe meine Composite-Ansicht für einen anderen Zweck verwendet und keine Objektansicht benötigt.)

    
___
Thomas Hudspith-Tatham 22.02.2013, 05:30
quelle

5 Antworten

7
___ answer17544162 ___

Für mich wurde das behoben (nachdem ich viele Stunden lang meinen Kopf auf den Tisch geschlagen hatte), aber dafür sorgte, dass %code% vor %code% !!

deklariert wurde

Works:

%Vor%

Funktioniert nicht (init wird zweimal ohne Argumente aufgerufen):

%Vor%

Es spielt keine Rolle, ob wir eine Instanz von "MyCompView" erhalten, nachdem beide deklariert wurden. "itemView" muss deklariert werden, bevor die CompView-Ansicht aufgerufen wird.

    
___ answer24186977 ___

Für RequireJS Benutzer und / oder Benutzer Kompilieren (Minimieren) von JavaScript

Ich möchte hinzufügen, dass die uglifying -Engine beim Verkleinern (Minimieren) von JavaScript die Dinge in der falschen Reihenfolge deklariert (d. h. CompositeView und ItemView können in umgekehrter Reihenfolge wie @Thomas Hudspith-Tatham und @simbolo deklariert werden). Das Problem tritt häufiger auf, wenn Sie Ihre Backbone.Marionette mit requireJS modularisieren und den Code optimieren (kompilieren).

Leider kenne ich keine garantierte Lösung, außer dass ich den Code neu kompiliert habe, der für mich funktioniert hat.

    
___ answer21072255 ___

Ich teile meine Erfahrung. Es könnte jemandem helfen.

Ich hatte ähnliche Probleme. Bei Initial I dachte ich, dass das Ereignis zweimal ausgelöst wurde, aber in Wirklichkeit wurde es zweimal angehört, was zu einem ungewöhnlichen Anwendungsverhalten führt.

Mein Ereignis wurde einmal aus der Composite-Ansicht (ein Trigger) ausgelöst, wurde aber aufgrund zweier Instanzen des Contact-Controllers zweimal angehört (2).

Ich habe behoben, indem ich sicherstelle, dass ich nur einen Listener (eine Controller-Instanz) für ein bestimmtes Verhalten habe (in meinem Fall öffne ich einen Bearbeitungsdialog).

Hinweis. Ich habe mehrere Controller in meiner Anwendung und ich laden mit erfordern.

    
___ qstnhdr ___ Backbone Marionette, Composite View wird zweimal initialisiert ___ tag123backbonejs ___ Backbone.js ist ein JavaScript-Framework mit einer RESTful JSON-Schnittstelle und basiert auf dem MVP-Design (Model-View-Presenter) ___ tag123marionette ___ Backbone.Marionette ist eine zusammengesetzte Anwendungsbibliothek für Backbone.js, die die Konstruktion von JavaScript-Anwendungen in großem Maßstab vereinfachen soll. Verwenden Sie dieses Tag NICHT für den Marionette-Treiber von Firefox. Verwenden Sie stattdessen das firefox-marionette-Tag. ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ tag123backboneviews ___ Ansichten in der Backbone.js-Bibliothek. Backbone-Ansichten werden verwendet, um zu widerspiegeln, wie die Datenmodelle Ihrer Anwendungen aussehen. Sie werden auch verwendet, um Ereignisse zu hören und entsprechend zu reagieren. ___ answer16786318 ___

Danke für die obige Erklärung.

Ich hatte das gleiche Problem. Wenn in der Ansicht "Composite" keine itemView definiert ist, ruft sie bei jedem Ändern der Auflistung ihre Initialize-Funktion auf.

Ich habe das behoben, indem ich eine leere Ansicht als Elementansicht verwendet habe.

(Ich habe meine Composite-Ansicht für einen anderen Zweck verwendet und keine Objektansicht benötigt.)

    
___
Thomas Hudspith-Tatham 25.02.2013, 00:28
quelle
18

Für mich wurde das behoben (nachdem ich viele Stunden lang meinen Kopf auf den Tisch geschlagen hatte), aber dafür sorgte, dass ItemView vor CompositeView !!

deklariert wurde

Works:

%Vor%

Funktioniert nicht (init wird zweimal ohne Argumente aufgerufen):

%Vor%

Es spielt keine Rolle, ob wir eine Instanz von "MyCompView" erhalten, nachdem beide deklariert wurden. "itemView" muss deklariert werden, bevor die CompView-Ansicht aufgerufen wird.

    
simbolo 09.07.2013 09:04
quelle
2

Danke für die obige Erklärung.

Ich hatte das gleiche Problem. Wenn in der Ansicht "Composite" keine itemView definiert ist, ruft sie bei jedem Ändern der Auflistung ihre Initialize-Funktion auf.

Ich habe das behoben, indem ich eine leere Ansicht als Elementansicht verwendet habe.

(Ich habe meine Composite-Ansicht für einen anderen Zweck verwendet und keine Objektansicht benötigt.)

    
KEINS 28.05.2013 07:34
quelle
2

Für RequireJS Benutzer und / oder Benutzer Kompilieren (Minimieren) von JavaScript

Ich möchte hinzufügen, dass die uglifying -Engine beim Verkleinern (Minimieren) von JavaScript die Dinge in der falschen Reihenfolge deklariert (d. h. CompositeView und ItemView können in umgekehrter Reihenfolge wie @Thomas Hudspith-Tatham und @simbolo deklariert werden). Das Problem tritt häufiger auf, wenn Sie Ihre Backbone.Marionette mit requireJS modularisieren und den Code optimieren (kompilieren).

Leider kenne ich keine garantierte Lösung, außer dass ich den Code neu kompiliert habe, der für mich funktioniert hat.

    
seebiscuit 12.06.2014 14:29
quelle
1

Ich teile meine Erfahrung. Es könnte jemandem helfen.

Ich hatte ähnliche Probleme. Bei Initial I dachte ich, dass das Ereignis zweimal ausgelöst wurde, aber in Wirklichkeit wurde es zweimal angehört, was zu einem ungewöhnlichen Anwendungsverhalten führt.

Mein Ereignis wurde einmal aus der Composite-Ansicht (ein Trigger) ausgelöst, wurde aber aufgrund zweier Instanzen des Contact-Controllers zweimal angehört (2).

Ich habe behoben, indem ich sicherstelle, dass ich nur einen Listener (eine Controller-Instanz) für ein bestimmtes Verhalten habe (in meinem Fall öffne ich einen Bearbeitungsdialog).

Hinweis. Ich habe mehrere Controller in meiner Anwendung und ich laden mit erfordern.

    
Ravi Kumar27 12.01.2014 07:16
quelle