此內容基本上是原始資料的翻譯。目的是了解 Magento 2 的 KnockoutJs 並用葡萄牙語創建有關 KnockouJs 的內容。
KnockoutJs 引入了 observables 的概念,這些屬性是可以被監視並在其值發生變化時自動更新的屬性。此功能允許使用者介面動態回應 模型.
資料的變化要在 KnockoutJs 中建立可觀察對象,您可以使用 ko.observable() 函數並為其指派初始值。若要存取 observable 的目前值,您可以將其視為函數。要只觀察沒有初始值的事物,只需呼叫不含參數的 Observable 屬性即可。
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
observables 中的 訂閱 是一種機制,可讓您在 observable 的值發生變化時收到通知。它們對於追蹤可觀察量
中的變化並對這些變化做出反應、更新使用者介面或在必要時採取其他操作至關重要。
subscribe() 方法 *** 接收一個 *callback 函數,每當 observable 的值被修改時就會執行函數。 callback 函數接收 observable 的新值作為參數。此函數接受三個參數:callback是每當通知發生時調用的函數,target(可選)在函數callback中定義this的值和event
(可選;預設為change)是接收通知的事件名稱。
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
另一個重要的一點是可以將訂閱儲存在變數中,並在必要時使用 dispose() 方法取消訂閱。當您想要暫時或永久停用 UI 更新以回應可觀察值的變更時,這非常有用。
let myObservable = ko.observable(0); // Criando uma subscription no observable myObservable.subscribe(function (newValue) { console.log('Novo valor do observable:', newValue); }, scope, event);
決定可觀察量類型的方法
Observables 陣列 是 observables 的擴展,用於處理需要可觀察的資料清單。與標準 JavaScript 陣列 不同,Observable 陣列 允許您自動追蹤清單資料的變更並回應式更新使用者介面。
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
Observables 陣列 具有特定的方法,可讓您以反應方式新增、刪除和操作項目。其中一些方法是:
對於修改陣列內容的函數,例如push 和splice,KO 方法會自動觸發依賴追蹤機制,以便所有註冊的監聽器都收到更改通知並且你的介面會自動更新,這意味著使用KO 方法(observableArray.push(...) 等)和原生JavaScript array 方法(observableArray() .push(.. .)),因為後者不會向array
訂閱者發送任何內容已更改的通知。
雖然可以像任何其他可觀察對像一樣使用subscribe 並訪問observableArray,但KnockoutJs 還提供了一種超級快速的方法來找出array observable 確實發生了變化(哪些項目剛剛被新增、刪除或移動)。您可以訂閱數組
更改,如下所示:
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
計算的 Observables 是依賴一個或多個 observables 的函數,只要這些依賴項發生任何變化,就會自動更新。每次其依賴項發生變更時,該函數都會被呼叫一次,並且它傳回的任何值都會傳遞給 observables,例如 UI 元素或其他 計算的 observables 。
Compated Observables 和Observables 之間的主要區別是Compulated Observables 不直接儲存值;相反,它們依賴其他可觀察值來計算它們的值。這意味著當 Compated Observable 所依賴的任何 observables 被修改時,它的值總是會自動更新。
let myObservable = ko.observable(0); // Criando uma subscription no observable myObservable.subscribe(function (newValue) { console.log('Novo valor do observable:', newValue); }, scope, event);
計算可觀察量的方法
這 ko.compulated 的第二個參數在評估計算的
observable 時設定 this 的值。如果不傳遞它,就不可能引用 this.firstName() 或 this.lastName()。有一個約定可以避免完全追蹤它:如果viewmodel 的建構子將對此的引用複製到另一個變數(傳統上稱為self)中,則可以在整個viewmodel 並且不必擔心它被重新定義以引用其他內容。
let myObservable = ko.observable('Inicial'); console.log(myObservable()); // Irá imprimir 'Inicial' myObservable('Novo valor'); console.log(myObservable()); // Irá imprimir 'Novo valor'
因為 self 在函數閉包時被捕獲,所以它在任何巢狀函數中都保持可用和一致,例如 計算的可觀察值的求值器。當涉及事件處理程序時,此約定更加有用。
如果計算的可觀察量只是根據一些可觀察的依賴關係計算並傳回一個值,最好將其聲明為ko.pureCompulated而不是ko.compulated。
let myObservable = ko.observable(0); // Criando uma subscription no observable myObservable.subscribe(function (newValue) { console.log('Novo valor do observable:', newValue); }, scope, event);
當計算的可觀察量被宣告為pure時,其求值器不會直接修改其他物件或狀態,KnockoutJs可以更有效地管理其重新求值和記憶體使用。如果沒有其他程式碼主動依賴它,KnockoutJs 將自動掛起或釋放它。
可寫入計算的可觀察量是計算的可觀察量的擴展,它允許創建計算的可觀察量,可以透過讀取和寫入來更新。與傳統的Compulated Observables 不同,傳統的Compulated Observables 僅根據其他observables 計算其值,並且不直接儲存值,
Writable Computed Observables可以儲存值,並提供更新該值的函數必要時。 要建立一個可寫入計算的Observable,需要將 ko.compulated 函數與包含兩個主要屬性的配置物件一起使用:讀取和寫入。 read 屬性包含計算函數來決定 observable 的值,而 write 屬性包含當您想要更新
observable 的值時調用的函數。以上是Observables 在 KnockoutJs 中如何運作的詳細內容。更多資訊請關注PHP中文網其他相關文章!