最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用vue構(gòu)建一個上傳圖片表單

 更新時間:2017年07月04日 14:31:56   作者:Wenzi  
這篇文章主要為大家詳細介紹了使用vue構(gòu)建一個上傳圖片表單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這篇博客也不知道起個什么名字比較好,畢竟剛開始學習vue,很多還不是很熟悉,一直在慢慢摸索中;之前也習慣了用jQuery寫js代碼,思維邏輯也要有個轉(zhuǎn)換的過程。

1. 轉(zhuǎn)變思維

使用vue編寫代碼,首先要做的就是轉(zhuǎn)換思維,vue是一個數(shù)據(jù)驅(qū)動的框架,我們只需要操作數(shù)據(jù),數(shù)據(jù)變化后,vue會自動改變DOM結(jié)構(gòu),而jQuery是直接操作DOM的。比如剛開始寫的代碼中犯的錯誤,有一個頁面中的input標簽是并列多個的,而且name屬性的值是自增的,那么我就用v-for循環(huán)下,把index填充進去就行了,刪除的時候根據(jù)index再進行刪除。于是代碼是這樣的:
html:

<div id="app">
 <ul>
 <li v-for="(item, index) in username">
 ${index}. <input type="text" :name="'sb['+index+']'" /> <a href="javascript:;" :index="index" @click="del">delete</a>
 </li>
 </ul>
 <a href="javascript:;" @click="add">add</a>
</div>

js:

var app = new Vue({
 el: '#app',
 delimiters : ['${', '}'],
 data: {
  username : [1, 2, 3] // 只要數(shù)組的下標,因此數(shù)值無所謂
 },
 methods : {
 // 添加選項
 add : function(){
  this.username.push(1);
 },

 // 刪除當前選項
 del : function(e){
  var index = e.target.getAttribute('index'); // 獲取所在位置然后刪除
  this.username.splice(index, 1);
 }
 }
})

我們先在輸入框中輸入不同的內(nèi)容,然后刪除中間的某個選項。[demo1]
結(jié)果發(fā)現(xiàn),被刪除的永遠是最后一個。這是為什么呢,我也是刪除數(shù)組了呀?我是看了官方文檔后才明白:用戶往輸入框內(nèi)輸入的內(nèi)容只保存在了DOM中,而我們是用vue中的username的下標渲染的出來的DOM元素,我們并沒有保存用戶輸入的內(nèi)容。當我們刪除了其中的某一項時,username發(fā)生變化,導致DOM重新渲染,渲染后,最后一項就沒有了。
那么怎么修改才能真正的實現(xiàn)刪除某一項呢?我們只需要把用戶輸入的內(nèi)容保存到username數(shù)組中即可:

html:

<div id="app">
 <ul>
 <li v-for="(item, index) in username">
 ${index}. <input type="text" :name="'sb['+index+']'" :value="item" > <a href="javascript:;" :index="index" @click="del">delete</a>
 </li>
 </ul>
 <a href="javascript:;" @click="add">add</a>
</div>

js:

var app = new Vue({
 el: '#app',
 delimiters : ['${', '}'],
 data: {
  username : ['wenzi', 'xxxx', 'yyyy'] // 只要數(shù)組的下標,因此數(shù)值無所謂
 },
 methods : {
 // 添加選項
 add : function(){
  this.username.push(''); // 新添加的輸入框為空
 },

 // 刪除當前選項
 del : function(e){
  var index = e.target.getAttribute('index'); // 獲取所在位置然后刪除
  this.username.splice(index, 1);
 }
 }
})

再來看下效果:[demo2]

2. 上傳圖片

剛開始時,使用的jQuery的插件fileupload,功能很全,當我為file標簽綁定上change事件后,然后再調(diào)用該插件進行圖片上傳,總是會出現(xiàn)意想不到的bug,比如我先對圖片格式進行限制,只能上傳png格式的圖片,可是有時候jpg格式的也能上傳上去;png格式的圖片,英文名稱無法上傳,先傳個中文名稱,然后就可以再上傳英文呢名稱的了。
后來發(fā)現(xiàn)html5下的formData屬性,能非常方便的上傳圖片,而且同時還能上傳其他的參數(shù),一小段代碼即可搞定:

// 上傳圖片,綁定change事件
uppic : function(e){
 var file = e.target.files[0]; // 每次只允許上傳一張圖片,因此只取[0]

 // 判斷圖片格式
 if( file.type!='image/png' ){ 
  alert('圖片格式不正確');
  e.target.files.length = 0;
  $(e.target).val('');
  return false; 
 }

 // 使用formData組裝數(shù)據(jù)
 var formData = new FormData();
 formData.append('pic', $(e.target)[0].files[0]); // 文件數(shù)據(jù)
 formData.append('flag', '1'); // 其他的一些參數(shù)
 $.ajax({// ajax上傳
  url: 'xxxxx.php',
  type: 'POST',
  cache: false,
  data: formData,
  processData: false,
  contentType: false
 }).done(function(result) {
  console.log('上傳完成');
 });
}

3. 總結(jié)

現(xiàn)在也是剛開始學習vue,代碼肯定比較爛,最重要的還是轉(zhuǎn)變思維吧!

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于el-select組件設置默認值的實現(xiàn)方式

    關(guān)于el-select組件設置默認值的實現(xiàn)方式

    這篇文章主要介紹了關(guān)于el-select組件設置默認值的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue2+elementui進行hover提示的使用

    vue2+elementui進行hover提示的使用

    本文主要介紹了vue2+elementui進行hover提示的使用,主要分為外部和內(nèi)部,具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • el-date-picker日期時間選擇器的選擇時間限制到分鐘級別

    el-date-picker日期時間選擇器的選擇時間限制到分鐘級別

    文章介紹了如何使用el-date-picker 組件來限制用戶選擇的時間,禁止選擇當前時間的日期及時分,同時允許選擇其他日期的全天時分,通過設置 `pickerOptions` 對象的屬性,可以實現(xiàn)對日期和時間的精確控制,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • VS?Code打開vue文件出現(xiàn)很多黃色波浪線的完美解決辦法

    VS?Code打開vue文件出現(xiàn)很多黃色波浪線的完美解決辦法

    作為一名經(jīng)驗豐富的開發(fā)者,下面這篇文章主要給大家介紹了關(guān)于VS?Code打開vue文件出現(xiàn)很多黃色波浪線的完美解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Vue3項目實現(xiàn)前端導出Excel的示例代碼

    Vue3項目實現(xiàn)前端導出Excel的示例代碼

    這篇文章主要介紹了Vue3項目實現(xiàn)前端導出Excel的示例,在vue3的項目中導出Excel表格的功能,可以借助xlsx庫來實現(xiàn),下面是詳細的操作步驟,需要的朋友可以參考下
    2025-01-01
  • Vue?調(diào)用攝像頭掃描條碼功能實現(xiàn)代碼

    Vue?調(diào)用攝像頭掃描條碼功能實現(xiàn)代碼

    本文介紹了如何使用Vue.js和jsQR庫來實現(xiàn)調(diào)用攝像頭并掃描條碼的功能,通過安裝依賴、獲取攝像頭視頻流、解析條碼等步驟,實現(xiàn)了從開始掃描到停止掃描的完整流程,同時,還強調(diào)了瀏覽器兼容性、HTTPS環(huán)境、權(quán)限問題和性能優(yōu)化的重要性,感興趣的朋友一起看看吧
    2025-03-03
  • vue實現(xiàn)選項卡案例

    vue實現(xiàn)選項卡案例

    這篇文章主要為大家詳細介紹了vue實現(xiàn)選項卡案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue元素實現(xiàn)動畫過渡效果

    vue元素實現(xiàn)動畫過渡效果

    這篇文章主要介紹了vue元素實現(xiàn)動畫過渡效果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • vue中的虛擬dom知識點總結(jié)

    vue中的虛擬dom知識點總結(jié)

    這篇文章主要介紹了vue中的虛擬dom知識點總結(jié),文章圍繞主題內(nèi)容展開詳細介紹,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • vue 3 中watch 和watchEffect 的新用法

    vue 3 中watch 和watchEffect 的新用法

    本篇文章主要通過 Options API 和 Composition API 對比 watch 的使用方法,讓大家快速掌握 vue3 中 watch 新用法,需要的朋友可以參考一下哦,希望對大家有所幫助
    2021-11-11

最新評論

遵义县| 霍城县| 晋江市| 延长县| 平遥县| 玉龙| 孟村| 巴东县| 修文县| 凤台县| 阿城市| 若尔盖县| 全州县| 峨眉山市| 禄丰县| 泸西县| 富源县| 英德市| 石首市| 将乐县| 澄迈县| 大邑县| 沿河| 固镇县| 栾城县| 台北县| 娄烦县| 诏安县| 什邡市| 巧家县| 建宁县| 陆丰市| 土默特右旗| 广平县| 铜山县| 乐昌市| 翼城县| 修水县| 九龙县| 简阳市| 万宁市|