backbone.js 使用JavaScript和Jade添加到本地存储

cu6pst1q  于 2022-11-10  发布在  Java
关注(0)|答案(3)|浏览(217)

Jade以及渲染时数据传递给它的方式存在问题。
我试图保存[{key1: "val1", key2: "val2"}, ...}];的数据,但出现了问题,因为它显示为下面的结果。
测试结果

key: xyz value:[{"artist":"Lady Gaga",...

这是我在服务器端Node.js上使用的代码,它很好地传递了它...

res.render('musics', {
    title: 'site',
    result: JSON.stringify(result)
});

这是我有问题的代码,因为我必须在Jade中调用Result的方式...

script
    function local (arr) {
        var i;
        i = "#{result}";
        localStorage.setItem('xyz', i);
    }
    console.log('stored');
    local();

结果周围的引号把它弄乱了,但是没有它们,我会得到一个意外标识符的错误...
任何建议,或者如果它可能是更好的去 AJAX 路线通过 Backbone (这是我在客户端使用的)我愿意,只是把一些指针-数据被抓取,并通过一个表单post的选择-所以数据在post后返回,是一个按时传输,所以如果我做了一个 AJAX 调用,它将不得不包括post和get,否则我不知道如何接收它...也许res.json(result)在服务器端,但然后页面需要以某种方式呈现...开放的建议。谢谢!最终我希望它进入localStorage没有“周围的一切。

jk9hmnmh

jk9hmnmh1#

那么您的Jade片段应该如下所示:

script!= "(function() {localStorage.setItem('xyz',JSON.stringify(" +result + ");})();"

通过使用!=,你告诉jade不要转义下面的内容,并且在客户端,你必须在把你的数据放到本地存储之前再次字符串化***。

gk7wooem

gk7wooem2#

作为对@greelgork的回答的改进:

这适用于JSON数组

script!= "(function() {var items = []; items = JSON.parse(localStorage.getItem('Stored_items')); console.log(JSON.stringify(items)); items.push(" + JSON.stringify(product) + "); localStorage.setItem('Stored_items', JSON.stringify(items)); })();"

无论如何,将一个项目推入localStorage需要在插入到localStorage之前是stringified,因此,@greelgorke的答案应该修改为:

单项

script!= "(function() {localStorage.setItem('xyz',JSON.stringify(result)); })();"

所以JSON.stringifystring之外就像其他的javascript代码一样,
这是我在我的项目中使用的,它worx

贷方Push JSON Objects to array in localStorage

l2osamch

l2osamch3#

if usersList.length
        script.
          const userList = !{JSON.stringify(usersList)}
          localStorage.setItem('xyz',JSON.stringify(userList))
          const loader = document.querySelector(".loader"); 
          loader.className +=" hidden";

相关问题