Функция setCookies не определена в одностраничном приложении Durandal - PullRequest
0 голосов
/ 06 сентября 2018

В настоящее время я работаю над одностраничным приложением, используя Durandal.

У меня есть две функции, одна из которых используется для «сохранения» токена Bearer после входа в систему для последующих вызовов API, а другая цель состоит в том, чтобы извлечь указанный токен Bearer при вызове с разных страниц приложения (для звонить).

Я создал две дополнительные функции, которые используются для установки файлов cookie и получения файлов cookie. 'setCookies' должен запускаться одновременно с 'setToken', в то время как 'getCookies' должен запускаться одновременно с 'getToken'.

Проблема, с которой я столкнулся, заключается в том, что мой браузер возвращает «Uncaught ReferenceError: setCookies не определено».

Кто-нибудь знает, что я делаю не так? Код ниже:

define(['durandal/app', 'knockout'], function (app, ko) {
return {
    bearerToken: ko.observable(),
    getToken: function () {
        this.bearerToken(getcookies());
        return this.bearerToken();
    },
    setToken: function (token) {
        setCookies("Bearer", token);
        this.bearerToken(token);
        console.error(this.bearerToken());
    },
    getCookies: function (cookieName) {
        var v = document.cookie.match('(^|;) ?' + cookieName + '=([^;]*)(;|$)');
        return v ? v[2] : null;
    },
    setCookies: function (cookieName, cookieValue) {
        document.cookie = cookieName + "=" + cookieValue;
    }
};
});

1 Ответ

0 голосов
/ 07 сентября 2018

Вы должны использовать this.setCookies(), а не просто setCookies(). Это потому, что функция присутствует внутри того же объекта, который вы возвращаете.

Здесь this относится к текущему объекту. В своем коде вы использовали this.bearerToken. Вы должны вызвать функцию setCookies() таким же образом.

Измените метод следующим образом

setToken: function (token) {
    this.setCookies("Bearer", token);
    this.bearerToken(token);
    console.error(this.bearerToken());
},
...