0
votes

Knockout mise à jour seulement une partie de la viewmodel

permet d'assumer une vue de mention de mJs xxx

maintenant je peux faire xxx

je peux aussi faire quelque chose comme Xxx

Les deux scénarios mettent à jour tout champ lié à vm.fooo1.barb

Ce que je voudrais faire est quelque chose comme xxx < P> Cela ne fonctionne pas, j'ai également essayé xxx

aucun d'entre eux ne fonctionne.

J'en ai besoin parce que dans mon vrai scénario, mon modèle est de retour D'un service WebService, les mises à jour FOO1 et FOO2 sont également retournées et je ne veux pas trop de cartographie personnalisée.


0 commentaires

3 Réponses :


0
votes

Apparemment, il y a un certain paramètre supplémentaire mystérieux ..

ko.mapping.fromJS(foo, {}, vm.Foo1);


1 commentaires

Ce fromjs Signature est décrit dans le Docs .



0
votes

Autant que je sache, ce n'est pas possible. Mais vous pouvez le faire:

var js = { 
            Foo1 : {
                BarA : 'text',
                BarB : 'other text' },
            Foo2 : {
                BarC : 'some text' }}; 

var vm = ko.mapping.fromJS(js);
ko.applyBindings(vm);

//later, after fetching data from the webservice:
//data = {
//   Foo1 : {
//      BarA : 'text',
//      BarB : 'other text' },
//}; note: Foo2 is not defined

ko.mapping.fromJS(data, {}, vm);


0 commentaires

0
votes

Vous ne voulez pas faire de mappages personnalisés, mais que vous envisagez de changer d'API, considérez les implications de ce que cela signifie que si vous comptez sur les résultats de l'API directement tels quels.

I.e. Dites que vous avez un résultat de l'API de: xxx

de sorte que vous utilisez tout sur votre balisage avec un tas de choses comme:

<étiquette Data-Bind = "Texte: user.employeecode">

Vous avez les noms de champ liés partout dans votre balisage dans 100 places. Vous vous appuyez sur eux dans des observables, des fonctions, et sur et encore et encore. Vous avez une dépendance 100% dure sur cette API.

Si cette API devait changer, ou être remplacée et avoir un format différent pour les données retournées que vous auriez une pause de votre application et que vous auriez Pour résoudre tant de choses.

D'autre part, si vous avez un fichier de couche de service JS qui crée des instances d'objets personnalisés pour les résultats de l'API, tout ce que vous avez à modifier est votre couche de service.

Vous pouvez changer facilement d'API et de ne pas avoir à modifier l'un de vos observables, des liaisons d'interface utilisateur, etc. Vous avez créé une couche de couplage entre l'application et les données d'extrémité arrière et vous pouvez échanger des raccords pour modifier l'ensemble du backend.

Je sais que ce n'est pas une réponse à votre question, mais je repenserais que vous êtes Stratégie de cartographie des résultats de l'API ou en prendre en compte.


0 commentaires