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

问题描述 投票:0回答:1

我目前正在使用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;
    }
};
});
javascript undefined session-cookies durandal bearer-token
1个回答
0
投票

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

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

改变这样的方法

setToken: function (token) {
    this.setCookies("Bearer", token);
    this.bearerToken(token);
    console.error(this.bearerToken());
},
© www.soinside.com 2019 - 2024. All rights reserved.