Flex RemoteObject - gérer plusieurs demandes
J'ai un couple de distance méthodes de l'objet que je tiens à répondre à de différentes façons, selon le contexte, mais je préfère ne pas configurer un tas de différentes RemoteObject alias. Aucun avis sur cela? Un peu de contexte:
Disons que je suis un administrateur de l'application qui affiche les statistiques de ventes de différentes manières. La méthode à distance ressemble:
<mx:RemoteObject id="rpt" destination="AMFServer">
<mx:method name="getSalesStats" fault="getSalesStatsFault(event)"
result = "getSalesStatsSuccess(event)" />
</mx:RemoteObject>
La getSalesStats méthode prend un ID d'employé et de vente d'un type de ses arguments. Vous souhaitez appeler comme:
rpt.getSalesStats(120, "peanuts");
public function getSalesStatsSuccess(e:ResultEvent):void {
salesdata:ArrayCollection = e.result.rows as ArrayCollection;
salesGraph.dataProvider = salesdata;
salesGraphPanel.title = "Peanut Sales, 1990";
}
Je veux être en mesure d'appeler cette méthode dans des contextes différents, parfois d'envoyer le résultat à un graphique et parfois à un datagrid; je veux être en mesure de modifier le titre et le type de graphique en fonction de ce que veut l'utilisateur. Une partie de ce que je veux peut être obtenue en évaluant les données retournées par le serveur; l'objet contient le nom du rapport, afin que je puisse évaluer la valeur. Mais certaines choses doivent changer en fonction plus que ce que je serai de retour à partir du serveur. Si c'était un appel synchrone, il serait facile; je ferais quelque chose comme:
function buttonOneClick():void {
myData1:ArrayCollection = getSalesStats(120, "peanuts");
myChart.dataProvider = myData1;
}
function buttonTwoClick():void {
myData2:ArrayCollection = getSalesStats(120, "cashews");
myDataGrid.dataProvider = myData2;
}
J'aimerais passer quelque chose par le biais de la méthode à distance à la fonction de répondre, comme:
rpt.getSalesStats(120, "peanuts", "clicked button one");
mais que, bien sûr, déclenche une erreur, car le serveur ne veut pas que ce dernier argument. Toutes les pensées? Je vais préciser si c'est confus..
OriginalL'auteur SkippyFlipjack | 2009-07-11
Vous devez vous connecter pour publier un commentaire.
Voici un excellent exemple de l'utilisation de AsyncToken avec RemoteObject les appels de méthode faire précisément ce dont vous avez besoin.
Quelque chose à garder à l'esprit lors de l'utilisation AsyncToken est que c'est un dynamique objet et vous pouvez ajouter de la propriété que vous souhaitez. L'événement dans votre répondeur méthode permettra d'effectuer une référence à la AsyncToken et vous pouvez accéder à vos propriétés dynamiques d'identifier facilement le contexte de la réponse.
OriginalL'auteur Joel Hooks
Dans Flex 4 et 3.4, utilisez la propriété callresponder classe:
Pour faire l'appel, d'attribuer le retour de l'AsyncToken de l'appel de méthode à la propriété de jeton de l'intervenant:
Ce qui sépare la réponse de la définition de l'appel de méthode, et vous pouvez ensuite l'envelopper dans quelle logique vous avez besoin.
OriginalL'auteur David Gassner
Vous pouvez avoir plusieurs méthodes d'un composant remoteObject.
Est-il une raison pourquoi vous ne pouvez pas utiliser quelque chose comme cela?
OriginalL'auteur CookieOfFortune
Flex prend en charge l'Asynchrone Achèvement Jeton de modèle de conception pour la manipulation de plusieurs demandes pour le même service. Voir la BlazeDS documentation.
OriginalL'auteur Martin Harrigan
Je pense qu'il y a seulement deux façons de le faire:
C'est la seule façon que je vois si vous n'avez pas accès au serveur. Si j'étais dans votre situation, je vais même créer l'objet à distance chaque fois que je fais l'appel distant. Je ne pense pas que cela affecte les performances (corrigez-moi si je me trompe). Bonne chance!
OriginalL'auteur Ammar
var rpcCall:AsyncToken;
"remoteService" instance de composant remoteobject
Espérons qu'il va donner un sens.
OriginalL'auteur sankar