"setCookies" Durandal 单页应用程序中未定义函数

"setCookies" function not defined in Durandal single page app

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

我有两个功能,其中一个用于 'save' 登录后的 Bearer 令牌,以便稍后进行 API 调用,另一个目的是在调用时检索所述 Bearer 令牌从应用中的不同页面(拨打电话)。

我创建了两个附加函数,用于设置 cookie 和检索 cookie。 'setCookies' 是 运行 同时 'setToken',而 'getCookies' 是 运行 同时 'getToken'。

我遇到的问题是我的浏览器正在返回 'Uncaught ReferenceError: setCookies is not defined'。

有人知道我做错了什么吗?代码如下:

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;
    }
};
});

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

这里this指的是当前对象。在您的代码中,您使用了 this.bearerToken。您必须以相同的方式调用 setCookies() 函数。

像这样改变方法

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