本地存储在 rendr 控制器中未定义
localStorage undefined in rendr controller
我正在 500 ReferenceError: localStorage is not defined
我的 Rendr 应用程序的控制器中。我试图从 localStorage 获取我的授权令牌并将其设置为 header,然后再获取规范。我也试过 window.localStorage 但后来我得到 window 未定义。我在控制器级别无法访问 window object 吗?如果没有,我将如何从 localStorage 中获取。
这是我的控制器代码。
module.exports = {
show: function(params, callback) {
var spec = {
model: {
model: 'Company', params: { name: params.id }
}
};
var options = {},
Authorization = localStorage.getItem('Authorization');
options.header = {
"Authorization": Authorization
}
this.app.fetch(spec, options, function (err, results) {
// return if there is an error fetching the user
if (err) return callback(err);
// set the title of the page to the users name
this.app.set('title', results.model.get('name'));
// render the page with the results from the fetch
callback(null, results);
}.bind(this));
}
};
欢迎来到 Rendr :-)
Rendr 是同构的(或“通用的”),这意味着它的很多代码 运行 都在服务器和浏览器中。如果你有你只想 运行 的代码在浏览器上有两种方法可以做到这一点:
在视图中有一个名为 postRender
的自定义方法 - 该方法在服务器上不是 运行,在浏览器上只有 运行。这是放置所有浏览器特定代码的标准位置。缺点是页面渲染后是运行
您可以将代码包装在 if (window !== 'undefined') {...}
中以确保它在浏览器中仅 运行s。缺点是它永远不会在服务器上运行。
在我们的 Rendr 应用程序中,我们使用了一些 localstorage,并且不得不将其嵌入基本模板的最顶部。这有点奇怪,因为本地存储的概念(浏览器具有持久性)与同构应用程序的概念(服务器和浏览器可以相同)相冲突。所以他们合作得不是很好。
我正在 500 ReferenceError: localStorage is not defined
我的 Rendr 应用程序的控制器中。我试图从 localStorage 获取我的授权令牌并将其设置为 header,然后再获取规范。我也试过 window.localStorage 但后来我得到 window 未定义。我在控制器级别无法访问 window object 吗?如果没有,我将如何从 localStorage 中获取。
这是我的控制器代码。
module.exports = {
show: function(params, callback) {
var spec = {
model: {
model: 'Company', params: { name: params.id }
}
};
var options = {},
Authorization = localStorage.getItem('Authorization');
options.header = {
"Authorization": Authorization
}
this.app.fetch(spec, options, function (err, results) {
// return if there is an error fetching the user
if (err) return callback(err);
// set the title of the page to the users name
this.app.set('title', results.model.get('name'));
// render the page with the results from the fetch
callback(null, results);
}.bind(this));
}
};
欢迎来到 Rendr :-)
Rendr 是同构的(或“通用的”),这意味着它的很多代码 运行 都在服务器和浏览器中。如果你有你只想 运行 的代码在浏览器上有两种方法可以做到这一点:
在视图中有一个名为
postRender
的自定义方法 - 该方法在服务器上不是 运行,在浏览器上只有 运行。这是放置所有浏览器特定代码的标准位置。缺点是页面渲染后是运行您可以将代码包装在
if (window !== 'undefined') {...}
中以确保它在浏览器中仅 运行s。缺点是它永远不会在服务器上运行。
在我们的 Rendr 应用程序中,我们使用了一些 localstorage,并且不得不将其嵌入基本模板的最顶部。这有点奇怪,因为本地存储的概念(浏览器具有持久性)与同构应用程序的概念(服务器和浏览器可以相同)相冲突。所以他们合作得不是很好。