2016-12-13 3 views
2

Ich renne in ein seltsames Problem mit dem <object> Tag innerhalb einer if.bind. Im Wesentlichen scheint es, als ob das Ansichtsfragment innerhalb der if-Bindung zwischengespeichert wird. Ich habe einen Gist mit meinen Erkenntnissen über Gist.run erstellt, hier:Deaktivieren Sie das Zwischenspeichern von Ansichten in if.bind?

https://gist.run/?id=e25a4e4ca1de59ba8baff20c3a4304c2

Object-Tags erscheinen nicht innerhalb eines if Bindung neu gerendert zu werden. Dies bedeutet, dass der Objektinhalt nicht aktualisiert wird, wenn sich die if-Bindung ändert, wenn der Fallback-Inhalt eingefügt wurde.

  1. Ändern Sie die Größe des Bildes unten mit der Eingabe Nummer. Wenn Sie die Zahl auf Null ändern, wird das Bild ungültig und der Ersatzinhalt wird angezeigt.
  2. Geben Sie die Nummer erneut ein. Der Inhalt wird nicht aktualisiert. Dies ist ein .
  3. Durch das Umschalten des Inhalts über if.bind wird das Objekt jedoch nicht zurückgesetzt (obwohl die Daten erneut gebunden werden sollten). Wird die Ansicht zwischengespeichert?

Ich bin nicht ganz sicher, was dieses Problem verursacht, aber ich glaube, dass es aufgrund Aureliens Caching sein kann. Ich glaube, dass Aurelia die Ansicht nicht jedes Mal neu erstellt, wenn die if-Bindung wieder erscheint (obwohl sie die Bindungen erneut ausführt). Dies bedeutet, dass <object> ungültig ist und der Fallback-Inhalt angezeigt wird. Wenn dies der Fall ist, gibt es eine Möglichkeit, Caching für die if Bindung zu deaktivieren - vielleicht durch ein Bindungsverhalten?

Antwort

0

Ich vermute, dass das Problem tatsächlich in dem Aurelia-Bündel sein kann, das Sie verwenden, nicht im Aurelia-Kern. Dein gist.run zeigt das Problem offensichtlich sehr gut. Der einzige Grund, warum ich das vermute, ist, dass ich gerade versucht habe, den Fehler mit aurelia-cli zu reproduzieren und die -bootstrapper und -tools auf die neuesten Versionen zu aktualisieren. Kopieren Sie einfach Ihre app.html und app.js direkt von der gist.run. In aurelia-cli konnte nicht der gleiche Fehler reproduziert werden wie in gist.run. Es gibt aber auch andere Unterschiede :) Zum Beispiel erscheint der Plattenhaltertext nicht, stattdessen sehe ich die placehold.it Seite in einem scrollenden div. Sehr eigenartig. Wie auch immer, ich hoffe, diese Antwort hilft Ihnen, es herauszufinden! Hier sind die Modulversionen, mit denen ich getestet habe.

$ npm list | grep aurelia 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected].0 
│ └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
├─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
+0

Guter Anruf. Ich habe meine Depends aktualisiert, aber ich sehe immer noch dasselbe. Seltsamerweise siehst du die Website selbst anstelle des Fallback-Inhalts, was meiner Meinung nach nicht passieren sollte. Versuchen Sie, eine offensichtlich ungültige Bild-URL einzugeben, und Sie sollten das Verhalten sehen, das ich sehe. –

+0

Yep, wenn ich das Datenattribut bearbeiten, um immer ungültige URL zu sein, dann sehe ich immer den Platzhaltertext, aber nie etwas anderes. Kann immer noch nicht mit Chrome55 auf OS X im aurelia-cli Kontext repro. Aber ich sehe auch nicht den Fehler Schritt # 2, das bekannte Problem, auf das Sie verweisen. Ihr Fehler hängt in gewissem Sinne von diesem Fehler ab. Das ist seltsam, du hast Recht! –

+0

Ich habe Ihr Verhalten auch lokal bestätigt. Ich denke, es kann mit dem Ausführen von localhost im Gegensatz zu dem Ausführen von einem Server zu tun haben. Unabhängig davon besteht das Hauptproblem darin, dass, wenn der Fallback-Inhalt aus irgendeinem Grund angezeigt wird (ungültige URL, schlechte Auslastung usw.), das Entfernen und erneute Binden durch die Bindung "if" dieses Element im DOM nicht wirklich neu erstellt. –

Verwandte Themen