作者:向朔1992,來自原文地址
一:navigator 跳轉url傳遞參數

使用方法說明
(1)傳值:在navigator的屬性url后拼接?id(參數名字)=要傳遞的值 (如果多個參數用&分開 &name=value&…….)
(2)取值:options 是包含url地址中參數的對象,可以直接 點 獲取。

擴展
JS獲取web頁面地址欄中的參數。
-
https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=%E5%8D%8E%E4%BC%81&*
-
//獲取地址欄中的參數
-
function GetQueryString(name) {
-
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-
var r = window.location.search.substr(1).match(reg);
-
-
if (r != null) {
-
return unescape(r[2]);
-
}
-
return null;
-
}
-
-
GetQueryString('sourceid')//chrome-instant
二:bindtap等事件傳參 什么是事件
事件是視圖層到邏輯層的通訊方式。 事件可以將用戶的行為反饋到邏輯層進行處理。 事件可以綁定在組件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函數。 事件對象可以攜帶額外信息,如 id, dataset, touches。


看圖,因為需要傳遞的數據比較多,所以我們通過dataset攜帶參數信息。如果只有一個參數,可以通過id來傳遞。
詳解(以常見的tap點擊事情為例)
wxml
-
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
JS
-
Page({
-
tapName: function(event) {
-
console.log(event)
-
}
-
})
event 打印結果
-
{
-
"type":"tap",
-
"timeStamp":895,
-
/////////////////////////////////
-
"target": {
-
"id": "tapTest",
-
"dataset": {
-
"hi":"WeChat"
-
}
-
},
-
"currentTarget": {
-
"id": "tapTest",
-
"dataset": {
-
"hi":"WeChat"
-
}
-
},
-
///////////////////////////////
-
"detail": {
-
"x":53,
-
"y":14
-
},
-
"touches":[{
-
"identifier":0,
-
"pageX":53,
-
"pageY":14,
-
"clientX":53,
-
"clientY":14
-
}],
-
"changedTouches":[{
-
"identifier":0,
-
"pageX":53,
-
"pageY":14,
-
"clientX":53,
-
"clientY":14
-
}]
-
}
注意兩點:
1、data-名稱 不能有大寫字母,如果需要,可以通過 - (中劃線)來連接單詞,編譯的時候小程序會將第二個單詞首字母自動大寫。圖中代碼是為了自己標志,所以第二個單詞的首字母大寫了,其實可以不用。data-* 屬性中不可以存放對象。
2、注意打印結果中target和currentTarget的區別。
target 觸發事件的源組件。 currentTarget 事件綁定的當前組件。
如果你在父容器上綁定了事件并傳參,當你點擊父容器時,事件綁定的組件和觸發事件的源組件是同一個元素,所以currentTarget 、target 都可以拿到參數,但是當你點擊子元素時,target 就不是事件綁定的組件了,所以拿不到參數。 由于事件冒泡的機制,父容器上綁定的事件依然可以觸發,所以currentTarget 依然可以拿到參數。
說明
id傳參和dataset類似,只是最后獲取值的時候不同。event.currentTarget.id
|