2009-04-24 5 views
0

Ich weiß nicht viel über Dojo aber ist Folgendes möglich:DoJo get/set überwiegende möglich

Ich nehme an, es einen Getter/Setter für den Zugang zu seinem Datenspeicher hat, ist es möglich, diesen Code zu überschreiben.

Zum Beispiel:

Im Dojo Speicher ich habe 'Name: @ Joe'

ist es möglich, die erhalten zu überprüfen:

get()

if name.firstChar = '@' then just 
return 'Joe' 

und:

set(var) 
if name.firstChar = '@' then set to @+var 

Ist so etwas möglich? oder brauche ich eine Wrapper-API?

Antwort

0

Ja, ich glaube schon. Ich denke, was Sie dies tun wollen hier gelesen und bestimmen, wie, wenn es funktioniert:

Die folgende Anweisung führt mich die Antwort zu glauben, ist ja:

... Durch die Forderung, Zugriff auf Speicherfunktionen zu gehen, kann das Geschäft die interne Struktur des Artikels verstecken. Dies ermöglicht es dem Artikel, in einem Format zu bleiben, das für am effizientesten ist und den Datentyp für eine bestimmte Situation darstellt. Die Elemente könnten beispielsweise XML-DOM-Elemente sein, und In diesem Fall würde der Speicher auf die Werte zugreifen, die DOM-APIs verwenden, wenn store.getValue() aufgerufen wird.

Als zweites Beispiel könnte das Element eine einfache JavaScript-Struktur und der Speicher kann dann die Werte durch normale JavaScript Accessor Notation zugreifen. Von den Endbenutzern Perspektive ist der Zugriff genau die gleichen: store.getValue (Artikel, "Attribut"). Dies bietet ein konsistentes Aussehen und Verhalten beim Zugriff auf einer Vielzahl von Datentypen. Dies bietet auch Effizienz beim Zugriff auf Artikel durch Reduzierung der Artikel Ladezeiten von Vermeidung von Konvertierung in ein definiertes internes Format, das alle Filialen verwenden müssten. ... Durch den Speicher Accessor Funktion bietet die Möglichkeit Lazy-Laden von Werten sowie Lazy Referenzauflösung.

http://www.dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/what-dojo-data/dojo-data-design

Ich würde gerne Ihnen ein Beispiel geben, aber ich denke, es ist viel mehr Untersuchung dauern wird.

1

Sie können die besten doc von http://docs.dojocampus.org/dojo/data/api/Read

Zuerst zu bekommen, für die Daten aus einem Geschäft bekommen Sie

getValue(item, "key") 

Ich glaube, das Problem auf folgende Weise lösen kann verwenden. Es wird davon ausgegangen, dass Sie einen ItemFileReadStore verwenden, Sie können einen anderen verwenden, ersetzen Sie ihn einfach.

dojo.require("dojo.data.ItemFileReadStore"); 
dojo.declare("MyStore", dojo.data.ItemFileReadStore, { 
    getValue:function(item, key){ 
     var ret = this.inherited(arguments); 
     return ret.charAt(0)=="@" ? ret.substr(1) : ret; 
    } 
}) 

Und dann benutzen Sie einfach „MyStore“ statt ItemFileReadStore (oder was auch immer speichern Sie verwenden). Ich habe gerade den Code gehackt, habe es nicht versucht, aber es sollte sehr gut die Lösung zeigen. Viel Glück