TypeError: не удалось построить «PasswordCredential»: «id» не должен быть пустым

Я хочу реализовать API управления учетными данными в своем угловом приложении.

мой login.html выглядит так

<div id="login-form" data-ng-form="loginForm" data-ng-controller="LoginFormController">
    <div>
        <input type="text" name="username" placeholder="username" data-ng-model="loginCredentials.username" id="uid" autocomplete="username">
        <input type="password" name="password" placeholder="password" data-ng-model="loginCredentials.password" id="pwd" autocomplete="new-password">
    </div>
    <div>
        <button id="loginButton" data-ng-click="login()">{{'label.button.login' | translate}}</button>
    </div>
    <div data-ng-show="authenticationFailed">
        <p>{{authenticationErrorMessage | translate}}</p>
    </div>
</div>

У меня есть LoginFormController в качестве моего контроллера. Внутри функции я создал новый объект с именем PasswordCredential, подобный этому

            var form = angular.element('#login-form');
            //console.log(form);
            var cred  = new PasswordCredential(form);
            //store the credentials
            navigator.credentials.store(cred)
            .then(function(){

            });
            

Но я получаю сообщение об ошибке PasswordCredential: id не должен быть пустым

Помогите, пожалуйста


person Mohit Bajoria    schedule 31.05.2017    source источник
comment
PasswordCredential перечисляет обязательные и необязательные поля для этого API. . Если вы собираетесь вставлять результат HTML-формы в этот API, вам нужны правильные имена полей. В противном случае вы должны построить промежуточный объект с правильными именами полей, вставив данные из неправильных имен полей вашей формы.   -  person James    schedule 31.05.2017
comment
Привет, Джеймс. Не могли бы вы объяснить мне подробно, я новичок :)   -  person Mohit Bajoria    schedule 31.05.2017
comment
Я тоже никогда этого не делал, предлагаю вам начать с образца формы на сайте Mozilla.   -  person James    schedule 31.05.2017


Ответы (1)


Вместо того, чтобы делать стиль формы

var form = angular.element('#login-form');
var cred  = new PasswordCredential(form);
//store the credentials
navigator.credentials.store(cred)
   .then(function(){

   });

Передайте в стиле объекта PasswordCredential

var cred  = new PasswordCredential({
                id: scope.loginCredentials.username,
                password: scope.loginCredentials.password
            });
//store the credentials
navigator.credentials.store(cred)
                .then(function(){
                    console.log("Done Saving Creds");
                });

И это должно быть все для сохранения ваших учетных данных!

person Raunak Sett    schedule 01.06.2017