4

有些州很容易映射到路线。例如:

'users/:id'  -->  #users/123

这里的状态只是一个简单的整数,因此很容易创建一个合理的路由并将该状态传递给路由处理程序。

但是当你的状态更复杂时应该使用什么策略(例如 JSON 对象、数组数组等)?

我注意到 Gmail 以看似 base-64 编码的标记“标记”其状态,例如:

#inbox/h223r488v8vHh4fa9a9qyUTkmb9334mN9O2s8

...然后我想它会以某种方式将该令牌反转回有意义的状态,但这个过程是我感到困惑的。


相关: http: //lostechies.com/derickbailey/2011/12/27/the-responsibility-of-the-various-pieces-of-backbone-js/

4

1 回答 1

1

为什么不使用 base64 javascript 库?那里有一吨。这是一个。很确定你需要JSON.stringify在编码之前和JSON.parse之后。

然后,如果它已经在 URL 中,则只需对其进行解码。然后你不需要存储它,你可以解码和编码。

 routes: {
     'encoded/:code': 'decode'
 },
 decode: function(code) {
     // using the linked library
     var decoded = window.atob(code);
     // do what you want
 }

base64 内置在一些浏览器中:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding

于 2013-08-08T18:20:16.040 回答