Ember.js - "Kann Operationen auf einem Metamorph nicht ausführen, die nicht im DOM sind", verursacht durch Vorlage

8

Ich habe ein Problem mit Ember.js, das den Fehler verursacht:

%Vor%

Ich fand diese zwei SO Fragen, die beide eine direkte Manipulation des DOM beinhalten, was in meiner App nicht der Fall ist. Die Suche nach der Fehlermeldung gibt auch zahlreiche Github-Probleme zurück, die sich auf denselben Typ direkter DOM-Manipulation beziehen.

    
nickiaconis 05.07.2013, 19:26
quelle

3 Antworten

32

Ich war ratlos, bis ich dieses Problem auf Github von einem Suche völlig unabhängig von der Fehlermeldung.

Im Grunde läuft der Fehler auf einen Handlebars-Ausdruck hinaus, der in einem HTML-Kommentar enthalten ist.

Es ist wahrscheinlich einfacher im Code als in Worten gesagt, also hier ist ein jsFiddle mit vielen Erklärungen gebacken in: Ссылка

Der {{computedProp}} -Ausdruck wird an drei Stellen innerhalb der Vorlage verwendet: wie üblich innerhalb eines HTML-Kommentars und innerhalb eines Blockkommentars des Handlebars. Öffnen Sie den Web Inspector und klicken Sie auf die Schaltfläche "Neu berechnen", um den erzeugten Fehler zu sehen.

Sie können den HTML-Kommentar aus der Vorlage des Beispiels entfernen und sehen, dass der Code problemlos ausgeführt werden kann, wenn er nicht vorhanden ist.

Hoffentlich wird dies andere blühende Ember-Entwickler leichter zu solch einer einfachen Lösung führen.

    
nickiaconis 05.07.2013, 19:26
quelle
8

Das Problem ist einfach, aber das Verfolgen der Ursache ist schwierig. Bei Objekten, die wir mit Metamorph verfolgen, wird ein Skriptelement mit der ID metamorph-##-start und der ID metamorph-##-end umschlossen. Unter normalen Umständen sollte Ember sie nicht entfernen, wenn sie nicht mehr benötigt werden. Es gibt eine Reihe von Gründen, warum dies entfernt werden könnte:

  • Manuelles Ändern des DOMs Wenn Sie die Skript-Tags manuell entfernen, werden sie nicht gefunden.
  • Fehlerhaftes HTML. Nehmen wir an, Sie haben ein offenes div hinterlassen, dann wird das metamorph - ## - end-Tag auf einer anderen Ebene als das Start-Tag verschachtelt.
Miguel Madero 22.11.2013 01:55
quelle
4

Eine weitere Ursache sind die Attribute in HTML-Tags, wenn wir zum Beispiel mit Lenkerdaten arbeiten:

%Vor%

Verwenden Sie binding element attributes anstelle der normalen Methode, zum Beispiel:

%Vor%     
rigobcastro 06.04.2014 07:04
quelle