Kann jemand bitte diese gemeinsame Bindung pitfall mir das erklären? (Unter Verwendung des falschen bindable Ereignisname)

StackOverflow https://stackoverflow.com/questions/4050013

  •  27-09-2019
  •  | 
  •  

Frage

Ich beziehe mich auf diese Seite Link-Text

  

Die Verwendung der falschen Ereignisnamen in der   [Bindable] Tag können Sie Ihre Ursache   Anwendung nicht Ihr Eigentum zu binden,   und Sie werden nicht einmal wissen, warum. Wann   Sie mit den Tasten [Bindable] Tag mit einem   individueller name, das folgende Beispiel aussieht   wie eine gute Idee:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event=EVENT_CHANGED_CONST)] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}
  

Der obige Code Abtretungsempfänger eine statische   Eigenschaft auf den Ereignisnamen, und dann   verwendet die gleiche Zuordnung zum Dispatch   das Ereignis. Wenn jedoch der Wert   ändert, wird die Bindung nicht angezeigt   arbeiten. Der Grund dafür ist, dass die Veranstaltung   Name wird EVENT_CHANGED_CONST und   nicht der Wert der Variablen.

     

Der Code geschrieben wurde, sollte als   folgt:

public static const EVENT_CHANGED_CONST:String = "eventChangedConst"; 
private var _number:Number = 0; 
[Bindable(event="eventChangedConst")] 
public function get number():Number 
{ 
  return _number; 
} 
public function set number(value:Number) : void 
{ 
  _number = value; 
  dispatchEvent(new Event(EVENT_CHANGED_CONST)); 
}

Ich bin damit einverstanden, tut das falsche Beispiel aussehen wie eine gute Idee, und ich würde es auf diese Weise tun, weil ich denke, es ist der richtige Weg und vermeidet die Möglichkeit eines Schreibfehlers. Warum ist der Name der Konstanten, anstatt sie den Wert verwendet? Sicherlich kann dies nicht wahr?

sein

Ich schätze Ihre Einsichten

War es hilfreich?

Lösung

Da der Standard-Flex-Compiler ist manchmal nicht so klug ... und ich fühle deinen Schmerz! Ich habe über dieses genaue Problem mehr als ein paar Mal beschwert.

Wenn ich mich richtig erinnere, dann ist es, weil der Compiler mehrere Durchgänge der Fall ist. Einer der frühen Pässe ändert die Metadaten in AS-Code. An diesem Punkt in dem Compiler hat er nicht den Rest des Codes AS analysiert, so dass sie nicht in der Lage Konstanten oder Verweise auf statische Variablen in anderen Dateien Parsen.

Das einzige, was ich vorschlagen kann, ist, melden Sie sich Adobe JIRA, Abstimmung für den Bug, und die Hoffnung, dass die Compiler-Fixes in 4.5 eine gewisse Erleichterung bringen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top