今天寫vue里面通過接口反參動態加載組件時候 跟着同學。。。學習到了
一、先說說vue 內置組件 component 的用法
component組件可以來專門用來進行組件的切換,使用is來綁定你的組件名,本次系統寫的比較簡單。。。
此處::is='組件名'可以直接條用組件。
因為全頁面有十個組件加載,所以用到了循環、數組。就遇到了在方法里可以打印數組里的值,但綁定組件名的地方獲取不到的問題。
后來加上了一個數組b,並把b數組的值賦值給a。a就可以獲取到了。就是實現了動態加載組件。
二、觀察者模式
我需要遍歷的數組值更新了,值也賦值了,為什么視圖不更新?這個問題網上也有很多解釋。
數組之所以獲取不到是因為綁定中的觀察者模式沒有檢測到b數組的改變,補習了一下觀察者模式。https://blog.csdn.net/xidongdong1/article/details/78613654
意圖:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。
主要解決:一個對象狀態改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協作。
何時使用:一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知,進行廣播通知。
如何解決:使用面向對象技術,可以將這種依賴關系弱化。
關鍵代碼:在抽象類里有一個 ArrayList 存放觀察者們。
在vue中model被定義為觀察者,而view里面進行一處或多處依賴數據綁定即為觀察者。https://www.cnblogs.com/pi-xia/articles/9351432.html中還列舉了一些被觀察者對觀察者的控制方法。
當a賦值為b后才被觀察者模式檢測到,由此也補習了點JS參數值傳遞和引用傳遞的知識
三、JS參數值傳遞和引用傳遞
字符串、數字、布爾、數組、對象、Null、Undefined
由於js
中的變量是松散類型的,所以它提供了一種檢測當前變量的數據類型的方法,也就是typeof關鍵字.
typeof 123 //Number //NaN/isNaN
typeof 'abc' //String
typeof true //Boolean //true/false
typeof undefined //Undefined
typeof null //Object //被當一個空對象引用了
typeof { } //Object
typeof [ ] //Object
typeof console.log() //Function
三大引用類型:object /Array/Function (按存儲類型)
值類型,復制值
引用類型,復制值,但其實是地址,實際上是指針。兩個變量都保存了同一個對象地址,則這兩個變量指向了同一個對象。因此,改變其中任何一個變量,都會相互影響
可以這樣理解 數組里的值改變之后,觀察者監聽的是a的值,其實是地址,但地址值並沒有改變。所以監聽不到。而a[]=b[]后,地址值改變就監聽到了。
下面的代碼:
var a=[1,2,3]
function aaa(b){
b.push(4)
}
aaa(a)
alert(a)// [1,2,3,4]
這里b、a所指地址一樣,所以b加了值4,a中的值也改變了。
此外,值類型賦值應該是存儲的就是a1=3,這樣的值。
這是我目前的理解,這都是以前看過的東西,沒有深刻理解,就忘記了。基礎的東西不應該忘呀!
有問題的地方歡迎指正。。。謝謝