Knockout.Js案例一Introduction

?在這第一個教程中,您將體驗的一些基本知識構建的web UI Model-View-ViewModel使用knockout.js(MVVM)模式。

?

案例1:添加:data-bind?

<p>First name:?<strong?data-bind="text:firstName">1</strong></p>

<p>Last name:?<strong?data-bind="text:lastName ">todo</strong></p>

?修改視圖中的兩個<Strong>元素,添加數據綁定屬性來顯示這個人的名字:\

Js:

function?AppViewModel()?{
????this.firstName?=?"1321";
????this.lastName?=?"Bertington";
}

//?Activates?knockout.js

ko.applyBindings(new?AppViewModel());?

?

案例2: Observable

可能你不限于顯示靜態數據。讓我們使用值綁定,以及一些常規的HTML <input>控件,使數據可編輯。

添加以下標記:

?

<p>First name:<input?data-bind="value:firstName"/></p>
<p>Last name:?<input?data-bind="value:lastName"/></p>

?

?function?AppViewModel()?{

? ??this.firstName?=?"1321";
? ??this.lastName?=?"Bertington";
}

// Activates knockout.js

ko.applyBindings(new?AppViewModel());

現在運行應用程序。當你編輯的文本在一個文本框?   

嗯…顯然什么也不會發生。讓我們解決……

?

實際上,當你編輯一個文本框,它更新底層視圖模型數據。但由于viewmodel屬性只是純JavaScript字符串,他們沒有通知任何人,他們已經改變了,所以UI保持靜態。

這就是為什么KO.Js有可見的概念——這些屬性,自動將問題通知每當他們的價值變化。

更新你的視圖模型使firstName和lastName屬性使用ko.observable可見:

?function?AppViewModel()?{

? ??this.firstName?=ko.observable("1321");
? ??this.lastName=?ko.observable("Bertington");
}
ko.applyBindings(new?AppViewModel());

現在重新運行應用程序和編輯文本框。

不僅這一次你會看到底層的視圖模型數據,

當你更新當你編輯,但所有相關的UI更新同步。

?

?案例3:Defining computed values典型的Computed的例子:

通常,你會想合并或將多個可觀察到的值轉換為讓別人。在這個例子中,您可能需要定義的全名是姓氏+空間+名字。

為了處理這個問題,Ko.JS有一個computed的概念(即計算屬性——這些都是引人注目的。,他們通知變化)和基于其他可見的值計算。

?

?添加一個fullName屬性視圖模型,通過添加下面的代碼在AppViewModel,firstName和lastName下面:

?function?AppViewModel()?{

? ?this.firstName?=ko.observable("1321");
? ??this.lastName=?ko.observable("Bertington");
? ??this.fullName=ko.computed(function(){
? ??return?this.firstName()+" "+this.lastName();
? ??})
}

ko.applyBindings(new?AppViewModel());

?

HTML:

<p>First name:<input?data-bind="value:firstName"/></p>
<p>Last name:?<input?data-bind="value:lastName"/></p>
<p>Full name:?<strong?data-bind="text: fullName"></strong></p>

如果你現在運行應用程序和編輯文本框時,你會發現所有UI元素(包括全稱顯示)與底層數據保持同步。

?

它是如何工作的?   

事情保持同步,因為依賴自動跟蹤:過去<Strong>取決于fullName,

反過來取決于firstName和lastName,

要么可以改變通過編輯文本框。只要從對象圖的任何更改造成的最小的更新都需要帶上你的視圖模型和可見的UI更新。

?

?

?案例4:Adding more behavior(綁定事件)

這個案例我們會為個按鈕加一些行為:

??this.capitalizeLastName?=?function()?{
? ? ? ??var?currentVal?=?this.lastName();? ? ? ??// Read the current value
? ? ? ??this.lastName(currentVal.toUpperCase());?// Write back a modified value
? ??};

?看,可以讀和寫一個變量的值,我們一般叫它函數。

?

接下來,添加一個按鈕到視圖,使用點擊綁定關聯與viewmodel功能點擊你只是補充道:

?<button?data-bind="click: capitalizeLastName">Go caps</button>

接下來,如果你點擊了按鈕,會發現UI的模型值變成大寫了。?

?

最后:簡述MVVM

這是一個非常簡單的示例,但它確實說明MVVM的一些要點:?

1.你有一個干凈的,UI的面向對象表示的數據和行為(你的視圖模型)ViewModel

2.另外,你有如何顯示明顯的聲明表示,到底該怎么顯示(你的視圖)View

3.您可以實現任意復雜的行為只是通過更新viewmodel對象。你不必擔心DOM元素需要修改/添加/刪除,同步的框架會為你去做。

后續教程將帶你更深!

Subsequent tutorials will take you much deeper!

?

轉載于:https://www.cnblogs.com/duyao/p/4362419.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259204.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#注冊表常用操作

1&#xff1a;加鍵 改值 Microsoft.Win32.RegistryKey Key Microsoft.Win32.Registry.CurrentUser.CreateSubKey( "Software\Microsoft\Internet Explorer\Main"); Key.SetValue( "Window Title" , value ); Key.Close(); …

谷歌瀏覽器外貿版_做外貿快兩個月,沒有單怎么辦?

Hello 大家好&#xff0c;我是Jack。今天給大家更新一篇在知乎看到的外貿問題&#xff1a;做外貿快兩個月&#xff0c;沒有單怎么辦?外貿這個話題在知乎算是小眾話題了&#xff0c;相比較于職場&#xff0c;英語學習&#xff0c;國際政治&#xff0c;IT等&#xff0c;這些話題…

React Native通信機制詳解

http://blog.cnbang.net/tech/2698/ React Native是facebook剛開源的框架&#xff0c;可以用javascript直接開發原生APP&#xff0c;先不說這個框架后續是否能得到大眾認可&#xff0c;單從源碼來說&#xff0c;這個框架源碼里有非常多的設計思想和實現方式值得學習&#xff0c…

C++11系列學習之四----auto

在哪些情況下要申明類型&#xff1a; 定義變量類型 函數返回值&#xff0c;函數參數 表達式返回變量類型 auto關鍵字原理 在定義變量的時候必須申明類型&#xff0c;c是強語言類型&#xff0c;在編譯階段需要知道類型&#xff0c;這樣的好處是程序效率更高&#xff0c;而…

windows 自動copy遠程服務器文件

net use h: \\123.45.67.000\T1dbbackup 123456/user:administrator ------遠程服務器IP123.45.67.000 。T1dbbackup&#xff1a;共享文件夾 。 h :映射到本機的盤符。 用戶名&#xff1a;administrator&#xff0c;密碼&#xff1a;123456copy h:\*.* f:\T1DB ------復…

eclipse 不能切換輸入法

按了AltShift鍵&#xff1f;再按一次把EN切換成CN&#xff0c;然后再CtrlShift就可以切換輸入法轉載于:https://www.cnblogs.com/jiayonghua/p/3413827.html

excel打開2個獨立窗口_謝楠稱女性獨立的不是錢是心 謝楠與吳京婚后生育2個兒子...

近日&#xff0c;在綜藝節目《幸福三重奏》 三日談妻子篇中&#xff0c;謝楠被問到如何看待獨立女性時&#xff0c;反問記者會不會問吳京同樣的問題&#xff1b;隨后回答道&#xff0c;女性獨立的不是錢&#xff0c;而是你的心&#xff1b;楠姐的回答超級霸氣了&#xff0c;你們…

C++11系列學習之五-------decltype

使用場景 在C中經常要用到很長的變量名&#xff0c;如果已經有變量和你將使用的變量是一個類型&#xff0c;即可使用decltype關鍵字 來申明一樣的類型變量。 decltype原理 返回現有變量類型&#xff0c;decltype是一個關鍵字&#xff0c;而不是一個函數&#xff0c;這有啥區別…

Linux學習 Unit 9

Unit9.openssh-server1.openssh-server功能&#xff1a;讓遠程主機可以通過網絡訪問sshd服務&#xff0c;開始一個安全shell2.客戶端連接方式ssh遠程主機用戶遠程主機ip[rootdesktop0 ~]# ssh root172.25.0.11The authenticity of host 172.25.0.11 (172.25.0.11) cant be esta…

2015年創業中遇到的技術問題:41-50

41.Bootstrap換行。col-md-10和col-md-2。這2個div按說應該在一行的&#xff0c;結果col-md-2換行了。看看樣式&#xff0c;發現有多余的“margin-left: 1px;"。42.Service實現類定義了一個“自動調度進行刷新”的方法。OverrideScheduled(cron "0 0/10 * * * ? &q…

KMP模板與講解

讀書筆記終于寫完了&#xff0c;寫一下我對KMP的理解。 KMP的思想就是盡量利用已經得到的信息&#xff0c;來降低時間復雜度&#xff0c;已經得到的信息存放在next數組里。算法確實很難理解&#xff0c;所以很難講解。。舉個例子來說吧。 設字符串是str[]&#xff0c;next[5] …

android 非root app 捕捉系統廣播_APP的生死之道

這篇文章主要介紹APP在安卓系統中是怎么被殺死的&#xff0c;按照怎樣的一個策略去釋放進程&#xff1b;同時介紹一些延長應用存活時間的方案&#xff0c;雖然這個在現在安卓系統上越來越難實現了&#xff0c;但是也是可以稍微了解下&#xff0c;主要也是通過這些hack的方案更好…

C++11系列學習之六-----for

前言C11這次的更新帶來了令很多C程序員期待已久的for range循環&#xff0c;每次看到javascript&#xff0c; lua里的for range&#xff0c;心想要是C能有多好&#xff0c;心里別提多酸了。這次C11不負眾望&#xff0c;再也不用羨慕別家人的for range了。使用場景ex1&#xff1…

ArcGIS Engine 10開發環境的一些常見問題(轉載)

轉自&#xff1a;http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid107612&extra&page1 許多版友在剛剛使用ArcGIS 10做開發的時候&#xff0c;都會遇到這樣那樣的問題。在擔任實習版主的這一個多月里&#xff0c;看到了這么幾個與開發環境相關的問題&#xff0c;重…

@value 靜態變量_面試官:為什么靜態方法不能調用非靜態方法和變量?

這個可能很多人之前學習jvm的時候都會遇到&#xff0c;屬于一個小問題&#xff0c;寫這篇文章的原因是我在看java相關的面試題目中遇到的&#xff0c;因此順手總結一下&#xff1a;一、例子我們先看效果&#xff1a;我們在靜態方法main中調用非靜態變量或者是方法都會報錯。我們…

SpringMVC連接多數據源配置

在spring-config-datasource.xml中配置&#xff1a; <ds:ibatis-config><ds:sql-map-clientid"sqlMapClient2"datasource-ref"riskBasicDataSource2"config-location"classpath:sqlmap-config.xml"/> </ds:ibatis-config> <…

Memcached 工作原理

http://hzp.iteye.com/blog/1872664Memcached處理的原子是每一個&#xff08;key&#xff0c;value&#xff09;對&#xff08;以下簡稱kv對&#xff09;&#xff0c;key會通過一個hash算法轉化成hash-key&#xff0c;便于查找、對比以及做到盡可能的散列。同時&#xff0c;mem…

C++11系列學習之七---------初始化列表

一、前言C的學習中&#xff0c;我想每個人都被變量定義和申明折磨過&#xff0c;比如我在大學筆試過的幾家公司&#xff0c;都考察了const和變量&#xff0c;類型的不同排列組合&#xff0c;讓你區別有啥不同。反正在學習C過程中已經被折磨慣了&#xff0c;今天再來看看重溫下那…

c# streamReader轉XmlDocument讀取節點

http獲得web&#xff08;url&#xff09;請求&#xff0c;先是獲得數據流streamreader&#xff0c;之后將String數據流轉換為xmldocument&#xff0c;之后xmlnode讀取節點。 // get the responseWebResponse webResponse webRequest.GetResponse();if (webResponse null){ re…

ad中電容用什么封裝_用什么來降低噪聲?只要幾個電容器就可以,簡單有效!...

使用電容器降低噪聲噪聲分很多種&#xff0c;性質也是多種多樣的。所以&#xff0c;噪聲對策(即降低噪聲的方法)也多種多樣。在這里主要談開關電源相關的噪聲&#xff0c;因此&#xff0c;請理解為DC電壓中電壓電平較低、頻率較高的噪聲。另外&#xff0c;除電容外&#xff0c;…