2017-08-24 1 views
0

Je veux créer un formulaire de connexion qui utilise des cookies avec knockoutjs. J'ai trouvé un jsFiddle qui travaillent pour une boîte de sélection (http://jsfiddle.net/mikevh/DP3TE/2/),Comment mettre les cookies à un formulaire de connexion avec knockout js?

<select data-bind="options: options, value:selected, optionsText:'Name'"></select> 
<button data-bind="click: save">Save</button> 

et j'ai essayé de modifier cela et de le faire avec des entrées. Ici, il est:

https://jsfiddle.net/boa2y2vq/5/

<input type="text" data-bind="value:username"/><br> 
<input type="password" data-bind="value:password"/><br> 
<button data-bind="click: save">Save</button> 

Mais cela ne fonctionne pas. Quelqu'un peut-il aider? Merci!

Répondre

0

est ici le violon mis à jour: https://jsfiddle.net/boa2y2vq/8/

Voici une liste des problèmes:

  1. ko.applyBindings(new vm(options)); échouait parce qu'aucune variable par son nom options a été déclarée.

  2. Les instructions obtenant les données du cookie échouaient lorsque la valeur n'était pas définie dans le cookie. Vous pouvez les envelopper dans un try..catch pour éviter le problème.

  3. Dans votre cas, vous pouvez définir la valeur directement dans un cookie en utilisant setCookie('username', self.username()); au lieu de setCookie('username', self.username().value);. Notez que j'ai omis la propriété value.

Voir Modèle:

var vm = function(data) { 
    var self = this; 
    var username = ""; 
    var password = ""; 

    try { 
    var cookieUser = parseInt(getCookie('username')); 
    var cookiePassword = parseInt(getCookie('password')); 
    username = data[cookieUser - 1]; 
    password = data[cookiePassword - 1]; 
    } catch (e) { 
    console.error("Error!", e); 
    } 
    self.username = ko.observable(username); 
    self.password = ko.observable(password); 
    self.options = ko.observableArray(data); 

    self.save = function() { 
    setCookie('username', self.username()); 
    setCookie('password', self.password()); 
    }; 
}; 

ko.applyBindings(new vm());