2017-07-07 10 views
0

J'ai un contrôleur qui remplit une deuxième liste déroulante en fonction de la sélection de la première, cela fonctionne bien bien que WebStorm le considère comme une erreur de syntaxe. Je sais que souhaitez publier l'ID du format FNAME à mon stockage de session à utiliser autre où, mais j'ai essayé le soufflet de code et je vois ValeurSaisir l'ID d'objet et l'insérer dans le stockage de session Angular

[object Object]

si J'utilise

sessionStorage.setItem('format', $scope.formats); 

et

non définie

si j'utilise

sessionStorage.setItem ('format', scope.formats.id de $);

J'ai aussi essayé

sessionStorage.setItem('format', $scope.formats.formatType.id); 

Je ne reçois rien même pas une valeur vide

comment puis-je ajouter correctement l'ID à ma valeur de format dans mon stockage de session?

code complet

FirstModule.controller('dropDown', function ($scope) { 

$scope.productsandformats = [ 
    { 
     "name": "staff", 
     "format": [ 
      {"Fname": "bill", "id": "1"}, 
      {"Fname": "bob", "id": "2"}, 
      {"Fname": "tom", "id": "3"} 
     ] 
    }, 
    { 
     "name": "managers", 
     "format": [ 
      {"Fname": "dick", "id": "4"}, 
      {"Fname": "jhon", "id": "5"} 
     ] 
    }, 

    { 
     "name": "directors", 
     "format": [ 
      {"Fname": "willy", "id": "6"} 
     ] 
    }, 


    { 
     "name": "temp", 
     "format": [ 
      {"Fname": "jeff", "id": "18"}, 
      {"Fname": "billy", "id": "19"} 
     ] 
    }]; 

$scope.productTypeChange = function() { 
    $scope.formats = $scope.productsandformats.find(ps => ps.name == $scope.formData.ProductType.name) 

    sessionStorage.setItem('format', $scope.formats.id); 

} 

}); Pour en savoir plus comment j'obtiens l'ID, le code ci-dessous permet à l'utilisateur de sélectionner A fname du type de nom, par exemple si vous sélectionnez une équipe, vous obtenez bill, bob et tom, puis après en avoir sélectionné un, l'imprimer le nom sélectionné et FNAME y compris l'identifiant nomfich, l'identifiant nomfich est ce que je dois envoyer à la mémoire de la session

HTML

<div class="radio col-sm-6" style="margin-top: 0 !important;"> 
    <label> 
     <input type="radio" ng-model="formData.type" value="Create" > 
     <span class="glyphicon glyphicon-unchecked"> 
     </span> 
     Need to make a poster? 
    </label> 
</div> 

<div class="radio col-sm-6"> 
    <label> 
     <input type="radio" ng-model="formData.type" value="Preview"> 
     <span class="glyphicon glyphicon-eye-open"> 
     </span> 
     Already have a poster? 
    </label> 
</div> 

Répondre

1

vous ne pouvez pas enregistrer un object, vous ne pouvez stocker un string.

Pour stocker un objet, vous devez le "stringifier".

var jsonItem = JSON.stringify($scope.formats); 
sessionStorage.setItem('format', jsonItem); 

Puis pour le récupérer, vous devez l'analyser

var item = sessionStorage.getItem('format'); 
item = JSON.parse(item) 

De MDN Storage/setItem

storage.setItem(keyName, keyValue);

keyName A DOMString contenant le nom de la clé que vous voulez à créer/u pdate.

keyValue Un DOMString contenant la valeur que vous voulez donne la clé que vous créez/mettez à jour.

A propos de trouver l'ID

Lorsque vous faites

$scope.formats = $scope.productsandformats.find(ps => ps.name == 
$scope.formData.ProductType.name) 

Vous obtenez un objet avec cette structure

{ 
    "name": "staff", 
    "format": [ 
     {"Fname": "bill", "id": "1"}, 
     {"Fname": "bob", "id": "2"}, 
     {"Fname": "tom", "id": "3"} 
    ] 
}, 

donc je suppose que l'identifiant est contenu à l'intérieur item.format[0].id pour le premier article et ainsi de suite pour les articles suivants.

formatformat est un tableau de sorte que vous ne serez pas en mesure d'accéder directement id si vous ne sélectionnez pas d'abord quel élément de la matrice que vous voulez (par exemple format[0]).

+1

Ok, bien je suis obtenir tout chaîne atm non seulement ID mais quand je fixe ce mal accepter, +1 pour l'information de votre une étoile – Beep

+0

Ceci est la meilleure réponse, je dois juste trouver un moyen juste pour obtenir l'ID – Beep

+1

J'ai élargi la réponse pour résoudre le problème avec l'id – Bolza

0

J'utilisé la réponse ci-dessus, mais pour obtenir l'identifiant que je devais utiliser ce

$scope.myFunc = function() { 
     var jsonItem = JSON.parse($scope.formData.formatType.id); 
     sessionStorage.setItem('format', jsonItem); 
    } 

réponse @Bolza était bon, mais il me fallait plus forte raison a continué de creuser et d'expérimenter