綁定在 KnockoutJs 中如何工作

此內容基本上是原始資料的翻譯。目的是了解 Magento 2 的 KnockoutJs 並用葡萄牙語創建有關 KnockouJs 的內容。
文件
- 資料綁定語法
- 綁定上下文
綁定
在 KnockoutJs 中,綁定 是連接 ViewModel 邏輯(資料和業務邏輯)與 View (HTML) 的方式。簡而言之,正是透過 綁定,使用者介面自動反映資料的變化,而不需要直接操作 DOM。
KnockoutJ 中的綁定透過 HTML 元素上的 data-bind 屬性進行工作。您可以在該屬性中指定要使用的綁定和關聯值。
data-bind 屬性不是HTML 原生的,儘管它是完全可以接受的(它嚴格兼容HTML 5 並且不會導致HTML 4 出現問題。但是由於瀏覽器默認情況下不識別該屬性,因此您需要啟用Knockout以使其生效。
綁定語法KnockoutJs 的聲明式綁定係統提供了一種簡潔而強大的方式將資料綁定到 UI。綁定到簡單的資料屬性或使用單一綁定通常是容易且明顯的。對於更複雜的綁定,它有助於更好地理解 KnockoutJs 綁定係統的行為和語法。
Today's message is: <span data-bind="text: myMessage"></span> <!-- related bindings: valueUpdate is a parameter for value --> Your value: <input data-bind="value: someValue, valueUpdate: 'afterkeydown'" /> <!-- unrelated bindings --> Cellphone: <input data-bind="value: cellphoneNumber, enable: hasCellphone" />
綁定上下文(綁定上下文)。
綁定值可以是單一值、變數或文字,或幾乎任何有效的 JavaScript 表達式。連結可以包含任意數量的空白(空格、製表符和換行符),因此您可以根據需要使用它們來組織連結。
連結可以包含 JavaScript 樣式的註解(//... 和 /*...*/)。例如:
如果指定的綁定沒有值,KnockoutJs 將為該綁定賦予未定義的值。上下文層次結構由 KnockoutJS 自動建立和管理。下面列出了 KO 提供的不同類型的綁定上下文。
| Variável de Contexto | Descrição |
|---|---|
| $root | Esta propriedade sempre se refere ao ViewModel de nível superior. Isso torna possível acessar métodos de nível superior para manipular ViewModel. Geralmente esse é o objeto passado para ko.applyBindings. |
| $data | Esta propriedade é muito parecida com a palavra-chave this do Javascript. A propriedade $data em um contexto de ligação refere-se ao objeto ViewModel para o contexto atual. |
| $index | Esta propriedade contém o índice de um item atual de um array dentro de um loop foreach. O valor de $index mudará automaticamente conforme e quando a matriz Observable subjacente for atualizada. Obviamente, este contexto está disponível apenas para ligações foreach. |
| $parent | Esta propriedade refere-se ao objeto ViewModel pai. Isso é útil quando se deseja acessar propriedades externas do ViewModel de dentro de um loop aninhado. |
| $parentContext | Esta propriedade é diferente da $parent, pois a $parent refere-se a dados. Considerando que $parentContext refere-se ao contexto de ligação. |
| $rawdata | Este contexto contém o valor bruto do ViewModel na situação atual. Esta propriedade se assemelha a $data, mas a diferença é que, se o ViewModel for agrupado em Observable, então $data será apenas desembrulhado. O ViewModel e $rawdata tornam-se dados observáveis reais. |
| $component | Este contexto é usado para se referir ao ViewModel daquele componente, quando está dentro de um determinado componente. |
| $componentTemplateNodes | É uma representação de uma matriz de nós DOM passados para esse componente específico quando se está dentro de um modelo de componente específico. |
連接名稱通常應與註冊的連接(內建或自訂)匹配,或另一個連接的參數。如果名稱與其中任何一個都不匹配,KnockoutJs 將忽略它(沒有任何錯誤或警告)。因此,如果連接失敗,請先檢查名稱是否正確。
綁定值可以是單一值、變數或文字或幾乎任何有效的 JavaScript 表達式。以下是各種連接值的範例:
Today's message is: <span data-bind="text: myMessage"></span> <!-- related bindings: valueUpdate is a parameter for value --> Your value: <input data-bind="value: someValue, valueUpdate: 'afterkeydown'" /> <!-- unrelated bindings --> Cellphone: <input data-bind="value: cellphoneNumber, enable: hasCellphone" />
以上是綁定在 KnockoutJs 中如何工作的詳細內容。更多資訊請關注PHP中文網其他相關文章!
熱AI工具
Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片
AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。
Undress AI Tool
免費脫衣圖片
Clothoff.io
AI脫衣器
Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
熱門文章
熱工具
記事本++7.3.1
好用且免費的程式碼編輯器
SublimeText3漢化版
中文版,非常好用
禪工作室 13.0.1
強大的PHP整合開發環境
Dreamweaver CS6
視覺化網頁開發工具
SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
熱門話題
誰得到更多的Python或JavaScript?
Apr 04, 2025 am 12:09 AM
Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。
如何使用JavaScript將具有相同ID的數組元素合併到一個對像中?
Apr 04, 2025 pm 05:09 PM
如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...
神秘的JavaScript:它的作用以及為什麼重要
Apr 09, 2025 am 12:07 AM
JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。
console.log輸出結果差異:兩次調用為何不同?
Apr 04, 2025 pm 05:12 PM
深入探討console.log輸出差異的根源本文將分析一段代碼中console.log函數輸出結果的差異,並解釋其背後的原因。 �...
如何實現視差滾動和元素動畫效果,像資生堂官網那樣?
或者:
怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果?
Apr 04, 2025 pm 05:36 PM
實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...
初學者的打字稿,第2部分:基本數據類型
Mar 19, 2025 am 09:10 AM
掌握了入門級TypeScript教程後,您應該能夠在支持TypeScript的IDE中編寫自己的代碼,並將其編譯成JavaScript。本教程將深入探討TypeScript中各種數據類型。 JavaScript擁有七種數據類型:Null、Undefined、Boolean、Number、String、Symbol(ES6引入)和Object。 TypeScript在此基礎上定義了更多類型,本教程將詳細介紹所有這些類型。 Null數據類型 與JavaScript一樣,TypeScript中的null
PowerPoint可以運行JavaScript嗎?
Apr 01, 2025 pm 05:17 PM
在PowerPoint中可以運行JavaScript,通過VBA調用外部JavaScript文件或嵌入HTML文件來實現。 1.使用VBA調用JavaScript文件,需啟用宏並具備VBA編程知識。 2.嵌入包含JavaScript的HTML文件,簡單易行但受安全限制。優點包括擴展功能和靈活性,劣勢涉及安全性、兼容性和復雜性,實際應用需注意安全性、兼容性、性能和用戶體驗。


