[TOC]
# 作用
Vue.set 的作用就是在構造器外部操作構造器內部的數據、屬性或者方法。比如在vue構造器內部定義了一個count為1的數據,我們在構造器外部定義了一個方法,要每次點擊按鈕給值加1.就需要用到Vue.set。
# 引用構造器外部數據:
什么是外部數據,就是不在Vue構造器里里的data處聲明,而是在構造器外部聲明,然后在data處引用就可以了。外部數據的加入讓程序更加靈活,我們可以在外部獲取任何想要的數據形式,然后讓data引用。
看一個簡單的代碼
~~~
//在構造器外部聲明數據
var outData={
count:1,
goodName:'car'
};
var app=new Vue({
el:'#app',
//引用外部數據
data:outData
})
~~~
# 在外部改變數據的三種方法
## 用vue.set改變
~~~
<body>
<div id="app">
{{count}}
</div>
<button onclick="add()">add</button>
</body>
<script type="text/javascript">
function add() {
//第一個是變量,第二個是變量中的值,第三個是要變成的值
Vue.set(outData, 'count', 20);
}
var outData = {
count: 1,
goodName: 'car'
};
var app = new Vue({
el: '#app',
data: outData,
})
</script>
~~~
## 用vue對象的方法添加
~~~
app.count++;
~~~
## 直接操作外部數據
~~~
outData.count++;
~~~
其實這三種方式都可以操作外部的數據,Vue也給我們增加了一種操作外部數據的方法
# 為什么要有Vue.set的存在?
由于Javascript的限制,Vue不能自動檢測以下變動的數組。
* 當你利用索引直接設置一個項時,vue不會為我們自動更新。
* 當你修改數組的長度時,vue不會為我們自動更新
我們來看個代碼
~~~
<div id="app">
<ul>
<li v-for=" aa in arr">{{aa}}</li>
</ul>
</div>
<button onclick="add()">外部添加</button>
<script type="text/javascript">
function add(){
console.log("我已經執行了");
app.arr[1]='ddd';
//Vue.set(app.arr,1,'ddd');
}
var outData={
arr:['aaa','bbb','ccc']
};
var app=new Vue({
el:'#app',
data:outData
})
</script>
~~~
這個是沒用的,需要這樣
~~~
function add() {
console.log("我已經執行了");
Vue.set(app.arr, 1, 'dd');
};
~~~
這時我們的界面是不會自動跟新數組的,我們需要用Vue.set(app.arr,1,’ddd’)來設置改變,vue才會給我們自動更新,這就是Vue.set存在的意義
- HTML
- 標簽
- 超鏈接
- 列表
- 表格和表單
- h5新增標簽
- 快捷方式
- 標簽包含
- CSS
- 選擇器
- 行內,塊元素,鏈接
- css三大特性
- 盒子模型
- 定位
- css可見性
- emment書寫
- 文本元素
- 外觀屬性
- 背景
- 浮動
- ps
- 用戶界面樣式
- 顯示和隱藏
- 過渡
- 2D,3D變形
- 動畫animation
- 伸縮布局(CSS3)
- BFC
- 優雅降級和漸進增強
- 3D旋轉
- 雙飛翼和圣杯
- JS基礎
- 輸出消息的幾種方式
- 數據類型
- Date對象
- Math對象
- Array對象
- 字符串常用方法
- 數據類型轉換
- 等號運算
- 代碼調試
- 數組
- 函數
- WebAPI
- webapi簡介
- 獲取頁面元素
- 事件
- 屬性操作
- 創建元素
- 節點操作
- 事件詳解
- BOM
- 位置相關屬性
- 拖拽彈窗
- 彈出層加遮罩
- ES6
- let和const
- 解構表達式變化
- 函數優化
- map和reduce
- nrm
- npm
- npm基礎
- package.json
- 淘寶鏡像
- webpack
- 介紹
- 多入口文件(Multiple entry files)
- Webpack CSS loader加載器
- webpack Image loader 加載圖片
- uglify-js壓縮打包JS
- webpack構建本地服務器
- vue內部指令
- v-if,v-show,v-for
- v-text,v-html
- v-on
- v-model
- v-bind
- v-pre,v-cloak,v-once
- vue全局api
- Vue.directive 自定義指令
- vue.extend構造器的延伸
- vue.set全局操作
- Vue的生命周期(鉤子函數)
- Template 制作模版
- Component 初識組件
- Component 組件props 屬性設置
- Component 父子組件關系
- Component 標簽
- vue選項
- propsData Option全局擴展數據傳遞
- computed Option 計算選項
- Methods Option 方法選項
- watch選項監控數據
- Mixins 混入選項操作
- Extends Option 擴展選項
- delimiters 選項
- vue實例和內置組件
- 實例屬性
- 實例方法
- 實例事件
- 內置組件 -slot
- vue-cli
- vue-cli介紹
- 項目目錄結構
- vue-cli模板
- vue-router
- 簡介
- 配置子路由
- 參數傳遞
- 單頁面多路由區域操作
- url傳遞參數
- vscode