在Durandal单页应用中未定义“ setCookies”功能

时间:2018-09-06 08:54:08

标签: javascript undefined session-cookies durandal bearer-token

我目前正在使用Durandal开发单页应用程序。

我有两个功能,其中一个用于登录后“保存” Bearer令牌,以便以后进行API调用,另一个功能是从应用程序的不同页面调用时检索所述Bearer令牌(打电话)。

我创建了两个附加功能,用于设置cookie和检索cookie。 “ setCookies”与“ setToken”同时运行,而“ getCookies”与“ getToken”同时运行。

我遇到的问题是我的浏览器返回“未捕获的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 :(得分:0)

您必须使用setCookies(),而不仅仅是this。这是因为该函数存在于您要返回的同一对象内。

此处this.bearerToken引用当前对象。在代码中,您使用了setCookies()。您必须以相同的方式调用setToken: function (token) { this.setCookies("Bearer", token); this.bearerToken(token); console.error(this.bearerToken()); }, 函数。

更改这种方法

removeUI()