javascript – Ember.js中查询参数的URL编码

前端之家收集整理的这篇文章主要介绍了javascript – Ember.js中查询参数的URL编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的最新项目中使用的是Ember.js,版本1.7.0-beta.1.我使用 query params功能使列表在硬刷新后仍然存在(例如,在重新加载之后,仍然选择列表中的所选项目).

我有一个控制器来管理:

@H_502_4@export default Ember.ObjectController.extend({ queryParams: [{selectedFiles: 'files'}],selectedFiles: Ember.A([]),//list of file ids ... //other props actions: { selectFile: function(file) { //set or remove the file id to the selectedFiles property } });

它工作得很棒,但有一个条件:url是url编码的:

Chrome& IE:

path/354?files=%5B”6513″%2C”6455″%2C”6509″%2C”6507″%2C”6505″%2C”6504″%2C”6511″%5D

FF(自动设置括号):

path/354?files=”6513″%2C”6455″%2C”6509″%2C”6507″%2C”6505″%2C”6504″%2C”6511″]

在Ember中有一种方法可以将query-param-string解码为更易读的格式吗?也许我可以在某处使用decodeURIComponent()函数

所需的输出

path/354?files=[“6513″,”6455″,”6509″,”6507″,”6505″,”6504″,”6511”]

解决方法

我有一个非常类似的问题,并通过重写路由中的serializeQueryParam和deserializeQueryParam使其工作.

在控制器中你会有:

@H_502_4@queryParams: ['files'],files: []

并在路线:

@H_502_4@serializeQueryParam: function(value,urlKey,defaultValueType) { if (defaultValueType === 'array') { return value; // Original: return JSON.stringify(value); } return '' + value; },

和:

@H_502_4@deserializeQueryParam: function(value,defaultValueType) { if (defaultValueType === 'array') { var arr = []; for (var i = 0; i < value.length; i++) { arr.push(parseInt(value[i],10)); } return arr; // Original: return Ember.A(JSON.parse(value)); } if (defaultValueType === 'boolean') { return (value === 'true') ? true : false; } else if (defaultValueType === 'number') { return (Number(value)).valueOf(); } return value; },

该网址将变为如下:

@H_502_4@?files[]=1&files[]=2&files[]=3

那将是服务器端的真实阵列.

Take a look at this working example on jsbin.com

原文链接:https://www.f2er.com/js/159049.html

猜你在找的JavaScript相关文章