H5 vant piker組件鍵值對(duì)選擇(單列)

html代碼:

<div?class="cell-picker">

????<van-field?readonly?clickable?:label="label"?:value="defaultVal"?:placeholder="placeholder"?@click="showPicker?=?true"?v-if="mode?===?'field'?||?mode?===?undefined"?/>

????<van-cell?:title="label"?is-link?:value="defaultVal?===?''?||?defaultVal?===?null?||?defaultVal?===?undefined???placeholder?:?defaultVal"?@click="showPicker?=?true"?v-if="mode?===?'cell'"?/>

????<van-popup?v-model="showPicker"?round?position="bottom">

??????<van-picker

????????ref="picker"

????????:readonly="readonly?===?true"

????????:title="label"

????????show-toolbar

????????:columns="columns"

????????:value-key="fieldName.text"

????????:default-index="defaultIndex"

????????@confirm="onConfirm"

????????@cancel="onCancel"

????????@change="onChange"

??????/>

????</van-popup>

??</div>

js代碼:

?props:?["label",?"columns",?"value",?"replaceFields",?"mode",?"readonly",?"placeholders"],

??data()?{

????return?{?showPicker:?false,?placeholder:?"",?fieldName:?{?text:?"text",?value:?"value"?},?defaultIndex:?null?|?"",?defaultVal:?""?};

??},

??watch:?{

????value:?{

??????handler(newVal,?oldVal)?{

????????this.getTextByVal(newVal);

??????}

????},

????replaceFields:?{

??????handler(newVal,?oldVal)?{

????????this.initFieldName(newVal);

??????}

????},

????placeholders:?{

??????handler(newVal,?oldVal)?{

????????if?(newVal?!==?""?&&?newVal?!==?undefined)?{

??????????this.placeholder?=?newVal;

????????}

??????}

????}

??},

??methods:?{

????initFieldName(data)?{

??????this.fieldName?=?{?text:?"text",?value:?"value"?};

??????if?(data?!==?undefined)?{

????????Object.keys(data).map(key?=>?{

??????????this.fieldName[key]?=?data[key];

????????});

??????}

????},

????onConfirm(e)?{

??????this.defaultIndex?=?this.$refs.picker.getIndexes()[0];

??????this.$emit("confirm",?this.getValuesByIndex());

??????this.defaultVal?=?this.columns[this.defaultIndex][this.fieldName.text];

??????this.showPicker?=?false;

????},

????//?根據(jù)Index獲取values

????getValuesByIndex()?{

??????let?val?=?null?|?"";

??????val?=?this.columns[this.defaultIndex][this.fieldName.value];

??????return?val;

????},

????getTextByVal(value)?{

??????this.defaultIndex?=?"";

??????this.defaultVal?=?"";

??????this.columns.forEach((item,?index)?=>?{

????????if?(item[this.fieldName.value]?===?value)?{

??????????this.defaultIndex?=?index;

??????????this.defaultVal?=?item[this.fieldName.text];

????????}

??????});

????},

????onCancel()?{

??????this.showPicker?=?false;

????},

????onChange(picker,?value,?index)?{

??????console.log(picker,?value,?index);

????}

??},

??created()?{

????this.placeholder?=?"請(qǐng)選擇"?+?this.label;

????if?(this.placeholders?!==?""?&&?this.placeholders?!==?undefined)?{

??????this.placeholder?=?this.placeholders;

????}

????this.initFieldName(this.replaceFields);

????this.getTextByVal(this.value);

??}

css:

::v-deep?.cell-picker?{

??font-size:?14px?!important;

??.van-picker__toolbar?{

????button?{

??????margin:?0px?20px;

????}

??}

}

::v-deep?.van-picker-column?{

??height:?100%;

}

以上為封裝起來的子組件,

父組件HTML:

<!--?picker?單列?cell-->

????<picker?label="picker單列cell"?:value="pickerVal"?:columns="data"?:replaceFields="{?text:?'text',?value:?'value'?}"?@confirm="onConfirm"?mode="cell"></picker>

????<!--?picker?單列?filed-->

????<picker?label="picker單列filed"?:value="pickerVal"?:columns="data"?@confirm="onConfirm"?mode="field"></picker>

js:?

data?=?[

??{

????text:?"浙江",

????value:?"01"

??},

??{

????text:?"福建",

????value:?"02"

??}

];

pickerVal:?"";

?onConfirm(e)?{

??????console.log("picker確認(rèn):"?+?e);

??????//?this.pickerVal?=?e;

????}

有疑問可以留言討論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末分井,一起剝皮案震驚了整個(gè)濱河市法严,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茶宵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宗挥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門乌庶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來种蝶,“玉大人,你說我怎么就攤上這事瞒大◇φ鳎” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵透敌,是天一觀的道長盯滚。 經(jīng)常有香客問我,道長酗电,這世上最難降的妖魔是什么魄藕? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮撵术,結(jié)果婚禮上背率,老公的妹妹穿的比我還像新娘。我一直安慰自己嫩与,他們只是感情好寝姿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著划滋,像睡著了一般饵筑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上古毛,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天翻翩,我揣著相機(jī)與錄音,去河邊找鬼稻薇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胶征,可吹牛的內(nèi)容都是我干的塞椎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼睛低,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼案狠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钱雷,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤骂铁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后罩抗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拉庵,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年套蒂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钞支。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茫蛹。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖烁挟,靈堂內(nèi)的尸體忽然破棺而出婴洼,到底是詐尸還是另有隱情,我是刑警寧澤撼嗓,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布柬采,位于F島的核電站,受9級(jí)特大地震影響且警,放射性物質(zhì)發(fā)生泄漏粉捻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一振湾、第九天 我趴在偏房一處隱蔽的房頂上張望杀迹。 院中可真熱鬧,春花似錦押搪、人聲如沸树酪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽续语。三九已至,卻和暖如春厦画,著一層夾襖步出監(jiān)牢的瞬間疮茄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工根暑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留力试,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓排嫌,卻偏偏與公主長得像畸裳,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淳地,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容