用JQ的load方法载入HTML页面,想要把参数传到HTML里面,再加载出来。
load()方法,本来是可以传参的,但是那是对于服务端的。我这里是本地HTML页面,请问还有什么办法可以实现?
后来利用url传参,或者cookie传参。 功能虽然能实现,但是感觉怪怪的,各位有好的建议也来聊一聊。
用JQ的load方法载入HTML页面,想要把参数传到HTML里面,再加载出来。
load()方法,本来是可以传参的,但是那是对于服务端的。我这里是本地HTML页面,请问还有什么办法可以实现?
后来利用url传参,或者cookie传参。 功能虽然能实现,但是感觉怪怪的,各位有好的建议也来聊一聊。
目前我是这样解决的
1、对load进行二次封装,在异步加载完html片段后,包裹一个div[data-role="pie"],然后把入参用jquery.data()方法暂存在Pie上。
2、片段内部的代码可以通过.closest()方法回溯到pie 并提取入参。
支持Number、String、Ojbect等任意合法类型的入参
示例:
/**
* 说明:
* 通过传入的容器id和组件地址,异步加载Html片段。
* 自动生成一个带特定属性data-role="pie"的容器,用来包裹该html片段
* 通过$.data()把入参以mailbox键名暂存在Pie节点上
* 支持Number、String、Ojbect等任意合法类型的入参
* 组件内的脚本可以用.closest()方法追溯到该Pie容器,并提取传入的数据
* 另外,会根据PIE容器上的reload属性值,决定多次调用时是否重新请求代码片段
*
* 调用方法:
* App.includeHtml({url:'',container:'',data:{}})
*
* Options:
* @url: [必选] [string] 组件的url地址
* @container: [必选] [string] selector,load的内容所存放的容器比如:'#con' 或者'.content .tab'
* @data: [选填] [任意类型] 传给组件的数据,以'mailbox'保存在容器上
* @type [选填] [string] 填充方式'append|prepend|html',不填默认是'html'
* @reload: [选填] [boolen] 表示是否允许重新拉取,默认值是true
* @cb: [选填] [function] 表示该组件初始化成功时的回调方法
*/
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
你这个参数值从何而来