日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Knockout應(yīng)用開發(fā)指南之綁定語法

第三章所有代碼都需要啟用KO的ko.applyBindings(viewModel);功能,才能使代碼生效,為了節(jié)約篇幅,所有例子均省略了此行代碼。

創(chuàng)新互聯(lián)公司是專業(yè)的西湖網(wǎng)站建設(shè)公司,西湖接單;提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行西湖網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

1 visible 綁定

目的

visible綁定到DOM元素上,使得該元素的hidden或visible狀態(tài)取決于綁定的值。

例子

 
 
 
  1.     You will see this message only when "shouldShowMessage" holds a true value.
  • 參數(shù)

    主參數(shù)

    當(dāng)參數(shù)設(shè)置為一個假值時(例如:布爾值false, 數(shù)字值0, 或者null, 或者undefined) ,該綁定將設(shè)置該元素的style.display值為none,讓元素隱藏。它的優(yōu)先級高于你在CSS里定義的任何display樣式。

    當(dāng)參數(shù)設(shè)置為一個真值時(例如:布爾值true,或者非空non-null的對象或者數(shù)組) ,該綁定會刪除該元素的style.display值,讓元素可見。然后你在CSS里自定義的display樣式將會自動生效。

    如果參數(shù)是監(jiān)控屬性observable的,那元素的visible狀態(tài)將根據(jù)參數(shù)值的變化而變化,如果不是,那元素的visible狀態(tài)將只設(shè)置一次并且以后不在更新。

    其它參數(shù)

    注:使用函數(shù)或者表達式來控制元素的可見性

    你也可以使用JavaScript函數(shù)或者表達式作為參數(shù)。這樣的話,函數(shù)或者表達式的結(jié)果將決定是否顯示/隱藏這個元素。例如:

     
     
     
    1.  0">
    2.     You will see this message only when 'myValues' has at least one member.
  • 依賴性

    除KO核心類庫外,無依賴。

    2 text 綁定

    目的

    text 綁定到DOM元素上,使得該元素顯示的文本值為你綁定的參數(shù)。該綁定在顯示或者上非常有用,但是你可以用在任何元素上。

    例子

     
     
     
    1. Today's message is:  

    參數(shù)

    主參數(shù)

    KO將參數(shù)值會設(shè)置在元素的innerText (IE)或textContent(Firefox和其它相似瀏覽器)屬性上。原來的文本將會被覆蓋。

    如果參數(shù)是監(jiān)控屬性observable的,那元素的text文本將根據(jù)參數(shù)值的變化而更新,如果不是,那元素的text文本將只設(shè)置一次并且以后不在更新。

    如果你傳的是不是數(shù)字或者字符串(例如一個對象或者數(shù)組),那顯示的文本將是yourParameter.toString()的等價內(nèi)容。

    其它參數(shù)

    注1:使用函數(shù)或者表達式來決定text值

    如果你想讓你的text更可控,那選擇是創(chuàng)建一個依賴監(jiān)控屬性(dependent observable),然后在它的執(zhí)行函數(shù)里編碼,決定應(yīng)該顯示什么樣的text文本。

    例如:

     
     
     
    1. The item is  today.

    現(xiàn)在,text文本將在“expensive”和“affordable”之間替換,取決于價格怎么改變。

    然而,如果有類似需求的話其實沒有必要再聲明一個依賴監(jiān)控屬性(dependent observable), 你只需要按照如下代碼寫JavaScript表達式就可以了:

     
     
     
    1. The item is  50 ? 'expensive' : 'affordable'"> today.

    結(jié)果是一樣的,但我們不需要再聲明依賴監(jiān)控屬性(dependent observable)。

    注2:關(guān)于HTML encoding

    因為該綁定是設(shè)置元素的innerText或textContent (而不是innerHTML),所以它是安全的,沒有HTML或者腳本注入的風(fēng)險。例如:如果你編寫如下代碼:

     
     
     
    1. viewModel.myMessage("Hello, world!");

    … 它不會顯示斜體字,而是原樣輸出標簽。如果你需要顯示HTML內(nèi)容,請參考html綁定.

    注3:關(guān)于IE 6的白空格whitespace

    IE6有個奇怪的問題,如果 span里有空格的話,它將自動變成一個空的span。如果你想編寫如下的代碼的話,那Knockout將不起任何作用:

     
     
     
    1. Welcome,  to our web site.

    … IE6 將不會顯示span中間的那個空格,你可以通過下面這樣的代碼避免這個問題:

     
     
     
    1. Welcome,   to our web site.

    IE6以后版本和其它瀏覽器都沒有這個問題

    依賴性

    除KO核心類庫外,無依賴。

    #p#

    3 html 綁定

    目的

    html綁定到DOM元素上,使得該元素顯示的HTML值為你綁定的參數(shù)。如果在你的view model里聲明HTML標記并且render的話,那非常有用。

    例子

     
     
     
     
  •   
  • 參數(shù)

    主參數(shù)

    KO設(shè)置該參數(shù)值到元素的innerHTML屬性上,元素之前的內(nèi)容將被覆蓋。

    如果參數(shù)是監(jiān)控屬性observable的,那元素的內(nèi)容將根據(jù)參數(shù)值的變化而更新,如果不是,那元素的內(nèi)容將只設(shè)置一次并且以后不在更新。

    如果你傳的是不是數(shù)字或者字符串(例如一個對象或者數(shù)組),那顯示的文本將是yourParameter.toString()的等價內(nèi)容。

    其它參數(shù)

    注:關(guān)于HTML encoding

    因為該綁定設(shè)置元素的innerHTML,你應(yīng)該注意不要使用不安全的HTML代碼,因為有可能引起腳本注入攻擊。如果你不確信是否安全(比如顯示用戶輸入的內(nèi)容),那你應(yīng)該使用text綁定,因為這個綁定只是設(shè)置元素的text 值innerText和textContent。

    依賴性

    除KO核心類庫外,無依賴。

    4 css 綁定

    目的

    css綁定是添加或刪除一個或多個CSS class到DOM元素上。 非常有用,比如當(dāng)數(shù)字變成負數(shù)時高亮顯示。(注:如果你不想應(yīng)用CSS class而是想引用style屬性的話,請參考style綁定。)

    例子

     
     
     
    1.    Profit Information
  •  
  • 效果就是當(dāng)currentProfit 小于0的時候,添加profitWarning CSS class到元素上,如果大于0則刪除這個CSS class。

    參數(shù)

    主參數(shù)

    該參數(shù)是一個JavaScript對象,屬性是你的CSS class名稱,值是比較用的true或false,用來決定是否應(yīng)該使用這個CSS class。

    你可以一次設(shè)置多個CSS class。例如,如果你的view model有一個叫isServre的屬性,

     
     
     

    非布爾值會被解析成布爾值。例如, 0和null被解析成false,21和非null對象被解析成true。

    如果參數(shù)是監(jiān)控屬性observable的,那隨著值的變化將會自動添加或者刪除該元素上的CSS class。如果不是,那CSS class將會只添加或者刪除一次并且以后不在更新。

    你可以使用任何JavaScript表達式或函數(shù)作為參數(shù)。KO將用它的執(zhí)行結(jié)果來決定是否應(yīng)用或刪除CSS class。

    其它參數(shù)

    注:應(yīng)用的CSS class的名字不是合法的JavaScript變量命名

    如果你想使用my-class class,你不能寫成這樣:

     
     
     
    1. ...

    … 因為my-class不是一個合法的命名。解決方案是:在my-class兩邊加引號作為一個字符串使用。這是一個合法的JavaScript 對象 文字(從JSON技術(shù)規(guī)格說明來說,你任何時候都應(yīng)該這樣使用,雖然不是必須的)。例如,

    依賴性

    除KO核心類庫外,無依賴。

    5 style 綁定

    目的

    style綁定是添加或刪除一個或多個DOM元素上的style值。比如當(dāng)數(shù)字變成負數(shù)時高亮顯示,或者根據(jù)數(shù)字顯示對應(yīng)寬度的Bar。(注:如果你不是應(yīng)用style值而是應(yīng)用CSS class的話,請參考CSS綁定。)

    例子

     
     
     
    1.    Profit Information
  • 當(dāng)currentProfit 小于0的時候div的style.color是紅色,大于的話是黑色。

    參數(shù)

    主參數(shù)

    該參數(shù)是一個JavaScript對象,屬性是你的style的名稱,值是該style需要應(yīng)用的值。

    你可以一次設(shè)置多個style值。例如,如果你的view model有一個叫isServre的屬性,

     
     
     
    1. ...

    如果參數(shù)是監(jiān)控屬性observable的,那隨著值的變化將會自動添加或者刪除該元素上的style值。如果不是,那style值將會只應(yīng)用一次并且以后不在更新。

    你可以使用任何JavaScript表達式或函數(shù)作為參數(shù)。KO將用它的執(zhí)行結(jié)果來決定是否應(yīng)用或刪除style值。

    其它參數(shù)

    注:應(yīng)用的style的名字不是合法的JavaScript變量命名

    如果你需要應(yīng)用font-weight或者text-decoration,你不能直接使用,而是要使用style對應(yīng)的JavaScript名稱。

    錯誤: { font-weight: someValue }; 正確: { fontWeight: someValue }

    錯誤: { text-decoration: someValue }; 正確: { textDecoration: someValue }

    參考:style名稱和對應(yīng)的JavaScript 名稱列表。

    依賴性

    除KO核心類庫外,無依賴。

    6 attr 綁定

    目的

    attr 綁定提供了一種方式可以設(shè)置DOM元素的任何屬性值。你可以設(shè)置img的src屬性,連接的href屬性。使用綁定,當(dāng)模型屬性改變的時候,它會自動更新。

    例子

     
     
     
    1.     Report

    呈現(xiàn)結(jié)果是該連接的href屬性被設(shè)置為year-end.html, title屬性被設(shè)置為Report including final year-end statistics。

    參數(shù)

    主參數(shù)

    該參數(shù)是一個JavaScript對象,屬性是你的attribute名稱,值是該attribute需要應(yīng)用的值。

    如果參數(shù)是監(jiān)控屬性observable的,那隨著值的變化將會自動添加或者刪除該元素上的attribute值。如果不是,那attribute值將會只應(yīng)用一次并且以后不在更新。

    其它參數(shù)

    注:應(yīng)用的屬性名字不是合法的JavaScript變量命名

    如果你要用的屬性名稱是data-something的話,你不能這樣寫:

     
     
     
    1. ...

    … 因為data-something 不是一個合法的命名。解決方案是:在data-something兩邊加引號作為一個字符串使用。這是一個合法的JavaScript 對象 文字(從JSON技術(shù)規(guī)格說明來說,你任何時候都應(yīng)該這樣使用,雖然不是必須的)。例如,

     
     
     
    1. ...

    依賴性

    除KO核心類庫外,無依賴。

    #p#

    7 click 綁定

    目的

    click綁定在DOM元素上添加事件句柄以便元素被點擊的時候執(zhí)行定義的JavaScript 函數(shù)。大部分是用在button,input和連接a上,但是可以在任意元素上使用。

    例子

     
     
     
    1.     You've clicked  times
    2.     Click me
  • 每次點擊按鈕的時候,都會調(diào)用incrementClickCounter()函數(shù),然后更新自動更新點擊次數(shù)。

    參數(shù)

    主參數(shù)

    Click點擊事件時所執(zhí)行的函數(shù)。

    你可以聲明任何JavaScript函數(shù) – 不一定非要是view model里的函數(shù)。你可以聲明任意對象上的任何函數(shù),例如: someObject.someFunction。

    View model上的函數(shù)在用的時候有一點點特殊,就是不需要引用對象的,直接引用函數(shù)本身就行了,比如直接寫incrementClickCounter 就可以了,而無需寫成: viewModel.incrementClickCounter(盡管是合法的)。

    其它參數(shù)

    注1:傳參數(shù)給你的click 句柄

    最簡單的辦法是傳一個function包裝的匿名函數(shù):

     
     
     
    1.     Click me

    這樣,KO就會調(diào)用這個匿名函數(shù),里面會執(zhí)行viewModel.myFunction(),并且傳進了'param1' 和'param2'參數(shù)。

    注2:訪問事件源對象

    有些情況,你可能需要使用事件源對象,Knockout會將這個對象傳遞到你函數(shù)的第一個參數(shù):

     
     
     
    1.     Click me
    2.  

    如果你需要的話,可以使用匿名函數(shù)的第一個參數(shù)傳進去,然后在里面調(diào)用:

     
     
     
    1.     Click me

    這樣,KO就會將事件源對象傳遞給你的函數(shù)并且使用了。

    注3: 允許執(zhí)行默認事件

    默認情況下,Knockout會阻止冒泡,防止默認的事件繼續(xù)執(zhí)行。例如,如果你點擊一個a連接,在執(zhí)行完自定義事件時它不會連接到href地址。這特別有用是因為你的自定義事件主要就是操作你的view model,而不是連接到另外一個頁面。

    當(dāng)然,如果你想讓默認的事件繼續(xù)執(zhí)行,你可以在你click的自定義函數(shù)里返回true。

    注4:控制this句柄

    初學(xué)者可以忽略這小節(jié),因為大部分都用不著,高級用戶可以參考如下內(nèi)容:

    KO在調(diào)用你定義的函數(shù)時,會將view model傳給this對象(也就是ko.applyBindings使用的view model)。主要是方便你在調(diào)用你在view model里定義的方法的時候可以很容易再調(diào)用view model里定義的其它屬性。例如: this.someOtherViewModelProperty。

    如果你想引用其它對象,我們有兩種方式:

    ◆ 你可以和注1里那樣使用匿名函數(shù),因為它支持任意JavaScript 對象。

    ◆ 你也可以直接引用任何函數(shù)對象。你可以使用bind使callback函數(shù)設(shè)置this為任何你選擇的對象。例如:

     
     
     
    1.     Click me

    如果你是C#或Java開發(fā)人員,你可以疑惑為什么我們還要用bind函數(shù)到一個對象想,特別是像調(diào)用someObject.someFunction。 原因是在JavaScript里,函數(shù)自己不是類的一部分,他們在單獨存在的對象,有可能多個對象都引用同樣的someFunction函數(shù),所以當(dāng)這個函數(shù)被調(diào)用的時候它不知道誰調(diào)用的(設(shè)置this給誰)。在你bind之前運行時是不會知道的。KO默認情況下設(shè)置this對象是view model,但你可以用bind語法重定義它。

    在注1里使用匿名函數(shù)的時候沒有具體的要求,因為JavaScript代碼 someObject.someFunction()就意味著調(diào)用someFunction,然后設(shè)置this到 someObject對象上。

    注5:防止事件冒泡

    默認情況下,Knockout允許click事件繼續(xù)在更高一層的事件句柄上冒泡執(zhí)行。例如,如果你的元素和父元素都綁定了click事件,那當(dāng)你點擊該元素的時候兩個事件都會觸發(fā)的。如果需要,你可以通過額外的綁定clickBubble來禁止冒泡。例如:

     
     
     
    1.     
    2.         Click me
    3.     

    默認情況下,myButtonHandler會先執(zhí)行,然后會冒泡執(zhí)行myDivHandler。但一旦你設(shè)置了clickBubble為false的時候,冒泡事件會被禁止。

    依賴性

    除KO核心類庫外,無依賴。

    #p#

    8 event 綁定

    目的

    event綁定在DOM元素上添加指定的事件句柄以便元素被觸發(fā)的時候執(zhí)行定義的JavaScript 函數(shù)。大部分情況下是用在keypress,mouseover和mouseout上。

    例子

     
     
     
    1.     
    2.         Mouse over me
    3.     
  •     
  •         Details
  •     
  • 每次鼠標在第一個元素上移入移出的時候都會調(diào)用view model上的方法來toggle detailsEnabled的值,而第二個元素會根據(jù)detailsEnabled的值自動顯示或者隱藏。

    參數(shù)

    主參數(shù)

    你需要傳入的是一個JavaScript對象,他的屬性名是事件名稱,值是你所需要執(zhí)行的函數(shù)。

    你可以聲明任何JavaScript函數(shù) – 不一定非要是view model里的函數(shù)。你可以聲明任意對象上的任何函數(shù),例如: event: { mouseover: someObject.someFunction }。

    View model上的函數(shù)在用的時候有一點點特殊,就是不需要引用對象的,直接引用函數(shù)本身就行了,比如直接寫event: { mouseover: enableDetails } 就可以了,而無需寫成: event: { mouseover: viewModel.enableDetails } (盡管是合法的)。

    其它參數(shù)

    9 submit 綁定

    目的

    submit綁定在form表單上添加指定的事件句柄以便該form被提交的時候執(zhí)行定義的JavaScript 函數(shù)。只能用在表單form元素上。

    當(dāng)你使用submit綁定的時候, Knockout會阻止form表單默認的submit動作。換句話說,瀏覽器會執(zhí)行你定義的綁定函數(shù)而不會提交這個form表單到服務(wù)器上??梢院芎玫亟忉屵@個,使用submit綁定就是為了處理view model的自定義函數(shù)的,而不是再使用普通的HTML form表單。如果你要繼續(xù)執(zhí)行默認的HTML form表單操作,你可以在你的submit句柄里返回true。

    例子

     
     
     
    1.     ... form contents go here ...
    2.     Submit

    這個例子里,KO將把整個form表單元素作為參數(shù)傳遞到你的submit綁定函數(shù)里。 你可以忽略不管,但是有些例子里是否有用,參考:ko.postJson工具。

    為什么不在submit按鈕上使用click綁定?

    在form上,你可以使用click綁定代替submit綁定。不過submit可以handle其它的submit行為,比如在輸入框里輸入回車的時候可以提交表單。

    參數(shù)

    主參數(shù)

    你綁定到submit事件上的函數(shù)

    你可以聲明任何JavaScript函數(shù) – 不一定非要是view model里的函數(shù)。你可以聲明任意對象上的任何函數(shù),例如: submit: someObject.someFunction。

    View model上的函數(shù)在用的時候有一點點特殊,就是不需要引用對象的,直接引用函數(shù)本身就行了,比如直接寫submit: doSomething就可以了,而無需寫成: submit: viewModel. doSomething(盡管是合法的)。

    其它參數(shù)

    備注:

    關(guān)于如果傳遞更多的參數(shù)給submit綁定函數(shù),或者當(dāng)調(diào)用非view model里的函數(shù)的時如何控制this,請參考click綁定。所有click綁定相關(guān)的notes也都適用于submit綁定。

    依賴性

    除KO核心類庫外,無依賴。

    10 enable 綁定

    目的

    enable綁定使DOM元素只有在參數(shù)值為 true的時候才enabled。在form表單元素input,select,和textarea上非常有用。

    例子

     
     
     
    1.     
    2.     I have a cellphone
    3.     Your cellphone number:
    4.     
    5.  

    這個例子里,“Your cellphone number”后的text box 初始情況下是禁用的,只有當(dāng)用戶點擊標簽 “I have a cellphone”的時候才可用。

    參數(shù)

    主參數(shù)

    聲明DOM元素是否可用enabled。

    非布爾值會被解析成布爾值。例如0和null被解析成false,21和非null對象被解析給true。

    如果你的參數(shù)是observable的,那綁定會隨著observable值的改變而自動更新enabled/disabled狀態(tài)。如果不是,則只會設(shè)置一次并且以后不再更新。

    其它參數(shù)

    注:任意使用JavaScript表達式

    不緊緊限制于變量 – 你可以使用任何JavaScript表達式來控制元素是否可用。例如,

     
     
     
    1.     Do something

    依賴性

    除KO核心類庫外,無依賴。

    11 disable 綁定

    目的

    disable綁定使DOM元素只有在參數(shù)值為 true的時候才disabled。在form表單元素input,select,和textarea上非常有用。

    disable綁定和enable綁定正好相反,詳情請參考enable綁定。

    #p#

    12 value 綁定

    目的

    value綁定是關(guān)聯(lián)DOM元素的值到view model的屬性上。主要是用在表單控件,