js传递对象

本文介绍了两种在HTML中向JavaScript函数传递复杂对象的有效方法。一种是直接传递对象,但对象需为全局变量;另一种是将对象序列化为字符串后再传递,并在接收端反序列化。


有时候我们需要拼html给方法传递一个对象,当然很多时候如果数据多了就是传id进行查询

方法一:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function modeSearch(a,b,c) {
       console.log(b);
    alert(b.name);
}
var myobj = { 'name': 'test' };//必须是全局变量
window.onload = function() {
        var mode = "<a href=\"#\" onclick=\"modeSearch(0,myobj,0);\">DEMO</a>";
    document.getElementById('demo').innerHTML = mode;
}
</script>
</head>
 
<body>
<div id="demo"></div>
</body>
</html

简单的对象可以,此时obj必须是全局变量,如果需要循环时改方法就不好了


方法二:把对象序列化成字符串在传递

var jsonstr = JSON.stringify(myobj);

jsonstr = jsonstr.replace(/"/gm, "'");//替换一下,因为使用JSON.stringify(myobj);转化后是双引号在拼接时会有问题,就把双引号全部替换成单引号

<a href=\"#\"  class=\"fjf\"   onclick=\"_lclinfo(" + jsonstr + ");\">

 function _lclinfo(_item) 
 {

     //此时item就是一个对象,可以通过item.来获取内容

}






### 微信小程序中对象数据绑定与值传递 在微信小程序开发中,数据绑定是构建用户界面的核心机制之一。对于对象数据的传递和绑定,可以通过以下方式实现。 #### 对象数据绑定 微信小程序支持通过 `data` 属性将对象绑定到页面组件中。例如,在父组件中定义一个对象,并将其绑定到子组件或页面中的元素[^1]。绑定时,可以使用 Mustache 语法(双大括号)来动态展示对象属性。 ```html <view>{{objectProperty}}</view> ``` 当需要更新对象的某个属性时,可以调用 `this.setData` 方法,确保视图层能够同步更新[^3]。 #### 值传递 微信小程序中的值传递通常分为两种情况:父组件向子组件传递数据,以及子组件向父组件传递数据。 - **父组件向子组件传递对象** 父组件可以通过自定义属性将对象传递给子组件。例如,在父组件中定义一个对象并将其作为属性传递给子组件[^3]。 ```javascript // 父组件 js Page({ data: { user: { name: 'Alice', age: 25 } } }); ``` ```html <!-- 父组件 wxml --> <child-component user="{{user}}"></child-component> ``` 子组件可以通过 `properties` 定义接收该对象[^2]。 ```javascript // 子组件 js Component({ properties: { user: { type: Object, value: {} } } }); ``` - **子组件向父组件传递对象** 子组件可以通过触发事件将对象传递回父组件。例如,子组件定义一个自定义事件[^2]。 ```javascript // 子组件 js this.triggerEvent('updateUser', { updatedUser: this.properties.user }); ``` 父组件可以通过绑定事件监听器接收传递对象[^3]。 ```javascript // 父组件 js Page({ handleUpdateUser(e) { const updatedUser = e.detail.updatedUser; this.setData({ user: updatedUser }); } }); ``` ```html <!-- 父组件 wxml --> <child-component user="{{user}}" bindupdateUser="handleUpdateUser"></child-component> ``` #### 双向数据绑定 尽管微信小程序本身并不直接支持双向数据绑定,但可以通过手动实现类似功能。例如,结合 `setData` 和事件绑定机制,可以在输入框等交互组件中实现数据的同步更新[^1]。 ```javascript // 父组件 js Page({ data: { inputValue: '' }, handleChange(e) { this.setData({ inputValue: e.detail.value }); } }); ``` ```html <!-- 父组件 wxml --> <input value="{{inputValue}}" bindinput="handleChange" /> ``` 这种机制虽然不是严格意义上的双向绑定,但在实际开发中能够满足大多数需求[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值