charger un objet dans un magasin de données dans le sencha touch
Je suis en train de charger un seul objet json à l'aide de sencha touch.
Quand je travaille avec des tableaux, tout est bien, mais je havn'pas trouver un moyen de chargement d'un objet unique dans un Poste.les données.Magasin
voici un échantillon de ce que je suis en train de charger:
{"person":{"name":"John","surname":"Fox"}}
et il ne fonctionne pas.
après avoir regardé cette entrée,
J'ai essayé de charger le suivant et il a travaillé:
[{"person":{"name":"John","surname":"Fox"}}]
Mes questions est: est-il un moyen de le charger w/o [ ]?
J'ai dû modifier mon code côté serveur afin de faire cela, et il se sent à moi comme une odeur de code...
Je veux être en mesure de charger un seul objet json w/o de le mettre dans une liste.
voici mon Sencha Touch code proxy:
Ext.regModel("Person", {
fields: ['name','surname']
});
var store = new Ext.data.Store({
model : "Person",
autoLoad : true,
proxy: {
type: 'ajax',
url : 'my json url...',
reader: {
type: 'json',
record: 'person'
}
}
});
BTW - de mon côté serveur code en Ruby on Rails.
OriginalL'auteur Rubinsh | 2011-04-26
Vous devez vous connecter pour publier un commentaire.
Animal de l'Ext de l'Équipe de Développement a donné cette solution:
Simplement à l'aide d'une fonction en tant que root, vous pouvez assurez-vous que le lecteur ait l'objet dans un tableau.
OriginalL'auteur Olivier - interfaSys
mise à jour: la façon d'accéder à un objet json à l'aide de sencha est juste pour faire une demande simple et ne pas utiliser une banque de données. voici un exemple de code qui fait cela:
Si vous insistez toujours sur l'utilisation d'une banque de données - voici une solution possible dans le côté serveur qui gère une API restful:
voici ce que j'ai fait afin de garder mon API restful:
J'ai ajouté un nouveau type MIME appelé sencha, qui se comporte exactement comme json mais aussi des enveloppements le json [ ] la parenthèse.
Il pourrait être (probablement) un overkill, mais de cette façon, il n'est pas intrusif à mon API JSON.
voici le code pour le nouveau type MIME:
cela me permet de définir le proxy suivant (notez le format: 'sencha' ) dans le côté client:
Cette façon, je peux toujours garder une API restful, et à l'égard des Sencha de représentation json comme une autre manière de représenter les ressources (json/xml/yaml)
Content d'avoir pu aider 🙂
OriginalL'auteur Rubinsh
Ne sais pas si c'est ce que vous voulez, mais vous pouvez le charger à travers le modèle comme:
Lors de l'utilisation d'un magasin, vous devez toujours envoyer un tableau, même si elle ne compte qu'un seul enregistrement.
Je ne sais pas pourquoi toujours l'envoi d'un tableau est problématique dans votre application, mais il doit être prette simple, il suffit de forcer le paramètre à un tableau...
Désolé, oui, vous devez définir le proxy dans le modèle. Je vois où vous allez sur le repos, ne pouvez-vous pas utiliser une action qui renvoie plusieurs modèles? (par exemple index). La chose ici est que les magasins sont pour la gestion de nombreux dossiers, de sorte qu'il n'est pas logique pour le point de repos de l'url qui renvoie un seul enregistrement (c'est à dire: montrer des actions)
OK, pouvez - vous s'il vous plaît poster un exemple d'utilisation d'une ressource et un proxy dans le modèle? Il serait vraiment utile pour moi (c'est Ce que je suis en train de faire maintenant...) je pense que c'est ce dont j'ai besoin
Il suffit de déplacer la configuration du proxy à partir du magasin pour le modèle, il devrait fonctionner.
Je ne pouvais pas le faire fonctionner, puisqu'il prévoit toujours un Tableau. Personnellement, je ne pense pas que c'est possible... j'ai fini par l'ajout d'un nouveau type de répondeur de mon côté serveur. Si vous avez une meilleure solution, je serais heureux d'en entendre parler. FYI - j'ai essayé d'utiliser: Ext.ModelMgr.getModel('Personne').charge(123, { success: function(personne) { console.log(personne.getId()); } });
OriginalL'auteur iwiznia
Je suis d'accord avec iwiznia, Ext.les données.Magasin attend toujours une [...] la réponse, et vous devriez probablement changer serverside code de retour éventail de personnes.
Peut-être vous devriez également essayer d'utiliser RESTE de style intraction de votre serverside et code client.
OriginalL'auteur bor1s