我目前正在使用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;
}
};
});
你必须使用this.setCookies()
,而不仅仅是setCookies()
。这是因为该函数存在于您返回的同一对象中。
这里this
指的是当前的对象。在您的代码中,您使用了this.bearerToken
。你必须以同样的方式调用setCookies()
函数。
改变这样的方法
setToken: function (token) {
this.setCookies("Bearer", token);
this.bearerToken(token);
console.error(this.bearerToken());
},