如何将骨干模型序列化为URL

时间:2014-10-19 17:34:30

标签: javascript backbone.js

我想在模型中存储简单应用程序的状态,并能够生成包含应用程序的完整状态的URL(即序列化模型)。是否存在提供此类功能的骨干惯用方式?

相关:

1 个答案:

答案 0 :(得分:1)

Backbone让你将模型序列化为JSON,但不是URL参数语法。您可以对JSON进行字符串化,对其进行编码,然后将其添加到uRL ...

var json = yourModel.toJSON();
var jsonString = JSON.stringify(json);
var encoded = encodeURI(jsonString);
var url = 'www.example.com?model_json=' + jsonString;

......但我不推荐它。 URL参数从未被设计为以这种方式使用,您可以遇到很多问题。一个问题是字符长度限制。作为this Stack Overflow answer explains,网址需要限制为2000个字符才能安全。根据你在模型中的内容,你可以毫无意义地超过它。

一个更好的方法是将模型保存在设计用于保存它的某个地方,就像在服务器上一样(毕竟这是save Backbone.Model的{​​{1}}方法)或者本地存储。然后,您需要在URL中输入的只是模型的ID,您可以使用该ID远程/从本地存储中检索数据。