页面:
事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。
事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
事件对象可以携带额外信息,如 id, dataset,。
可以在微信页面使用列表来动态展示数据,然后将动作绑定在列表的每一个元素上面,同时给JS传递相应的data或者dataset,使用语法如下:
文中的语法
这样js文件就已经可以拿到相应的数据,还要实现相应的js函数:
例如其中的bindinput="inputdata"这个inputdata这个js函数:
inputdata: function (e) {
var that = this
var index = e.currentTarget.id;
console.log(e)
var key = e.currentTarget.dataset.key;
var data = e.detail.value;
var item_data = 'data_array[' + index + ']' //这里使array的下标可以动态改变
var item_key = 'key_array[' + index + ']' //这里使array的下标可以动态改变
that.setData({
[item_data]: data, //注意:这里item必须要加[],至于为什么我也不明白
[item_key]: key,
//data_array[index] : data,
})
},
这个函数实现的是将收集到的数据动态赋值给两个数组:data_array和key_array,对于一个前端页面传递给js函数的整体对象e,对于单个的数据id,要使用e.currentTarget.id来获取,对于一个数据集合里面的数据,要使用e.currentTarget.dataset.key来进行获取,对于时间获取到的数据,要使用e.detail.value来拿到。总之,要打印出console.log(e)来查看对象的结果来查找所需要的元素。
将获取到的数据传递给相应的后台url接口,例如提交按钮当中的submit_action: function (event):
//将id上传
submit_action: function (event) {
var app = getApp();
var that = this;
console.log(event.currentTarget.id);
var id = event.currentTarget.id;
console.log("收集到的数据");
console.log(that.data.data_array);
console.log(that.data.key_array);
for (var i = 0; i < that.data.data_array.length; i++)
{
if ((typeof (that.data.data_array[i]) != "undefined") && (typeof (that.data.key_array[i]) != "undefined"))
{
that.data.dic_array[that.data.key_array[i]] = that.data.data_array[i];
}
}
console.log(that.data.dic_array);
if (that.data.opinion) {
wx.request({
url: 'http://www.ydyw.com:8008/operationChange/ticketagree/',
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
method: "POST",
data: {
operationChange_username: app.globalData.global_username,
operationChange_ticket_id: app.globalData.ticket_id,
operationChange_transition_id: id,
operationChange_dic: JSON.stringify(that.data.dic_array),
//operationChange_dic: JSON.parse(that.data.dic_array),
operationChange_opinion: that.data.opinion,
},
success: function (res) {
console.log(res)
if (res.statusCode == 200) {
wx.showToast({
title: '提交成功啦',
icon: 'success',
duration: 2000,
success: function () {
setTimeout(function () {
wx.reLaunch({
url: '../../../index/index'
})
}, 800)
}
})
}
}
})
}
},
这里面主要注意的是json数据格式:
JSON 的常规用途是同 web 服务器进行数据交换。
(1)在向 web 服务器发送数据时,数据必须是字符串。通过 JSON.stringify() 把 JavaScript 对象转换为字符串。
例如:
var obj = { name:"Bill Gates", age:62, city:"Seattle"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
(2)从后台服务器接收到的数据通过 JSON.parse() 解析数据,这些数据会成为 JavaScript 对象。
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();
同样,在后台接收到的数据也是字符串,要进行解析变成数据对象,发送给前端的数据也要将数据对象变成字符串来进行发送。