小程序 input 數據雙向綁定,實現方法之一
我們都知道 vue 中可以使用 modal 來實現 input 內容數據的雙向綁定。
小程序好像沒有提供相應的方法支持,就需要我們自己寫了。
原理
很簡單,在 input
上先綁定需要取值的變量,如這個變量名是 name
,然後再定義一個用於指向變量名的屬性 data-modal
這個屬性值設置爲 name
,在 input
的綁定方法中將這個屬性值取出,就會知道這個 input
綁定了哪個變量,然後再將 input
的當前值賦給這個變量即可。
實現
wxml
<input id='name'
name="name"
type='text'
value='{{name}}' <!-- input 從 js 中的 data.name 取值 -->
data-modal='name' <!-- 這裏通過 data-xx 的形式傳遞一個需要綁定的變量名,之後可以通過 event.dataset.xxx 輕鬆取到 -->
bindinput='handleInputChange' <!-- 這裏綁定 input 內容變化時的處理方法 -->
>
</input>
wxs
Page({
data: {
name: String
},
handleInputChange: function(e){
// 取出定義的變量名
let targetData = e.currentTarget.dataset.modal;
// 取出定義的變量名
let currentValue = e.detail.value;
// 將 input 值賦值給 定義的變量名,this.name 可以直接取到在 data 中定義的 name 值,其效果跟 this[變量名] 是對等的,這是 js 基礎
this[targetData] = currentValue;
}
}
效果如下圖: