日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

KnockOut绑定

發(fā)布時間:2025/4/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KnockOut绑定 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 visible 綁定

目的

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

例子

  • <div data-bind="visible: shouldShowMessage">
  • You will see this message only when "shouldShowMessage" holds a true value.
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • shouldShowMessage: ko.observable(true) // Message initially visible
  • };
  • viewModel.shouldShowMessage(false); // ... now it's hidden
  • viewModel.shouldShowMessage(true); // ... now it's visible again
  • </script>
  • 參數(shù)

    主參數(shù)

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

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

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

    其它參數(shù)

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

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

  • <div data-bind="visible: myValues().length > 0">
  • You will see this message only when 'myValues' has at least one member.
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • myValues: ko.observableArray([]) // Initially empty, so message hidden
  • };
  • viewModel.myValues.push("some value"); // Now visible
  • </script>
  • 依賴性

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

    2 text 綁定

    目的

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

    例子

  • Today's message is: <span data-bind="text: myMessage"></span>
  • <script type="text/javascript">
  • var viewModel = {
  • myMessage: ko.observable() // Initially blank
  • };
  • viewModel.myMessage("Hello, world!"); // Text appears
  • </script>
  • 參數(shù)

    主參數(shù)

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

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

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

    其它參數(shù)

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

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

    例如:

  • The item is <span data-bind="text: priceRating"></span> today.
  • <script type="text/javascript">
  • var viewModel = {
  • price: ko.observable(24.95)
  • };
  • viewModel.priceRating = ko.dependentObservable(function () {
  • returnthis.price() >50?"expensive" : "affordable";
  • }, viewModel);
  • </script>
  • 現(xiàn)在,text文本將在“expensive”和“affordable”之間替換,取決于價格怎么改變。

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

  • The item is <span data-bind="text: price() > 50 ? 'expensive' : 'affordable'"></span> today.
  • 結果是一樣的,但我們不需要再聲明依賴監(jiān)控屬性(dependent observable)。

    注2:關于HTML encoding

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

  • viewModel.myMessage("<i>Hello, world!</i>");
  • … 它不會顯示斜體字,而是原樣輸出標簽。如果你需要顯示HTML內(nèi)容,請參考html綁定.

    注3:關于IE 6的白空格whitespace

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

  • Welcome, <span data-bind="text: userName"></span> to our web site.
  • … IE6 將不會顯示span中間的那個空格,你可以通過下面這樣的代碼避免這個問題:

  • Welcome, <span data-bind="text: userName">&nbsp;</span> to our web site.
  • IE6以后版本和其它瀏覽器都沒有這個問題

    依賴性

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

    3 html 綁定

    目的

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

    例子

  • <div data-bind="html: details"></div>
  • <script type="text/javascript">
  • var viewModel = {
  • details: ko.observable() // Initially blank
  • };
  • viewModel.details("<em>For further details, view the report <a href='report.html'>here</a>.</em>");
  • // HTML content appears
  • </script>
  • 參數(shù)

    主參數(shù)

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

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

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

    其它參數(shù)

    注:關于HTML encoding

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

    依賴性

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

    4 css 綁定

    目的

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

    例子

  • <div data-bind="css: { profitWarning: currentProfit() < 0 }">
  • Profit Information
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • currentProfit: ko.observable(150000)
  • // Positive value, so initially we don't apply the "profitWarning" class
  • };
  • viewModel.currentProfit(-50);
  • // Causes the "profitWarning" class to be applied
  • </script>
  • 效果就是當currentProfit 小于0的時候,添加profitWarning CSS class到元素上,如果大于0則刪除這個CSS class。

    參數(shù)

    主參數(shù)

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

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

  • <div data-bind="css: { profitWarning: currentProfit() < 0, majorHighlight: isSevere }">
  • 非布爾值會被解析成布爾值。例如, 0和null被解析成false,21和非null對象被解析成true。

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

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

    其它參數(shù)

    注:應用的CSS class的名字不是合法的JavaScript變量命名

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

  • <div data-bind="css: { my-class: someValue }">...</div>
  • … 因為my-class不是一個合法的命名。解決方案是:在my-class兩邊加引號作為一個字符串使用。這是一個合法的JavaScript 對象 文字(從JSON技術規(guī)格說明來說,你任何時候都應該這樣使用,雖然不是必須的)。例如,

    依賴性

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

    5 style 綁定

    目的

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

    例子

  • <div data-bind="style: { color: currentProfit() < 0 ? 'red' : 'black' }">
  • Profit Information
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • currentProfit: ko.observable(150000) // Positive value, so initially black
  • };
  • viewModel.currentProfit(-50); // Causes the DIV's contents to go red
  • </script>
  • 當currentProfit 小于0的時候div的style.color是紅色,大于的話是黑色。

    參數(shù)

    主參數(shù)

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

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

  • <div data-bind="style: { color: currentProfit() < 0 ? 'red' : 'black', fontWeight: isSevere() ? 'bold' : '' }">...</div>
  • 如果參數(shù)是監(jiān)控屬性observable的,那隨著值的變化將會自動添加或者刪除該元素上的style值。如果不是,那style值將會只應用一次并且以后不在更新。

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

    其它參數(shù)

    注:應用的style的名字不是合法的JavaScript變量命名

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

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

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

    參考:style名稱和對應的JavaScript 名稱列表。

    依賴性

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

    6 attr 綁定

    目的

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

    例子

  • <a data-bind="attr: { href: url, title: details }">
  • Report
  • </a>
  • <script type="text/javascript">
  • var viewModel = {
  • url: ko.observable("year-end.html"),
  • details: ko.observable("Report including final year-end statistics")
  • };
  • </script>
  • 呈現(xiàn)結果是該連接的href屬性被設置為year-end.html, title屬性被設置為Report including final year-end statistics。

    參數(shù)

    主參數(shù)

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

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

    其它參數(shù)

    注:應用的屬性名字不是合法的JavaScript變量命名

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

  • <div data-bind="attr: { data-something: someValue }">...</div>
  • … 因為data-something 不是一個合法的命名。解決方案是:在data-something兩邊加引號作為一個字符串使用。這是一個合法的JavaScript 對象 文字(從JSON技術規(guī)格說明來說,你任何時候都應該這樣使用,雖然不是必須的)。例如,

  • <div data-bind="attr: { ‘data-something’: someValue }">...</div>
  • 依賴性

    除KO核心類庫外,無依賴

    7 click 綁定

    目的

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

    例子

  • <div>
  • You've clicked <span data-bind="text: numberOfClicks"></span> times
  • <button data-bind="click: incrementClickCounter">Click me</button>
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • numberOfClicks: ko.observable(0),
  • incrementClickCounter: function () {
  • var previousCount =this.numberOfClicks();
  • this.numberOfClicks(previousCount +1);
  • }
  • };
  • </script>
  • 每次點擊按鈕的時候,都會調(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ù):

  • <button data-bind="click: function() { viewModel.myFunction('param1', 'param2') }">
  • Click me
  • </button>
  • 這樣,KO就會調(diào)用這個匿名函數(shù),里面會執(zhí)行viewModel.myFunction(),并且傳進了'param1' 和'param2'參數(shù)。

    注2:訪問事件源對象

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

  • <button data-bind="click: myFunction">
  • Click me
  • </button>
  • <script type="text/javascript">
  • var viewModel = {
  • myFunction: function (event) {
  • if (event.shiftKey) {
  • //do something different when user has shift key down
  • } else {
  • //do normal action
  • }
  • }
  • };
  • </script>
  • 如果你需要的話,可以使用匿名函數(shù)的第一個參數(shù)傳進去,然后在里面調(diào)用:

  • <button data-bind="click: function(event) { viewModel.myFunction(event, 'param1', 'param2') }">
  • Click me
  • </button>
  • 這樣,KO就會將事件源對象傳遞給你的函數(shù)并且使用了。

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

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

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

    注4:控制this句柄

    初學者可以忽略這小節(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ù)設置this為任何你選擇的對象。例如:

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

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

    注5:防止事件冒泡

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

  • <div data-bind="click: myDivHandler">
  • <button data-bind="click: myButtonHandler, clickBubble: false">
  • Click me
  • </button>
  • </div>
  • 默認情況下,myButtonHandler會先執(zhí)行,然后會冒泡執(zhí)行myDivHandler。但一旦你設置了clickBubble為false的時候,冒泡事件會被禁止。

    依賴性

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

    8 event 綁定

    目的

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

    例子

  • <div>
  • <div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }">
  • Mouse over me
  • </div>
  • <div data-bind="visible: detailsEnabled">
  • Details
  • </div>
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • detailsEnabled: ko.observable(false),
  • enableDetails: function () {
  • this.detailsEnabled(true);
  • },
  • disableDetails: function () {
  • this.detailsEnabled(false);
  • }
  • };
  • </script>
  • 每次鼠標在第一個元素上移入移出的時候都會調(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元素上。

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

    例子

  • <form data-bind="submit: doSomething">
  • ... form contents go here ...
  • <button type="submit">Submit</button>
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • doSomething: function (formElement) {
  • // ... now do something
  • }
  • };
  • </script>
  • 這個例子里,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ù)

    備注:

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

    依賴性

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

    10 enable 綁定

    目的

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

    例子

  • <p>
  • <input type='checkbox' data-bind="checked: hasCellphone"/>
  • I have a cellphone
  • </p>
  • <p>
  • Your cellphone number:
  • <input type='text' data-bind="value: cellphoneNumber, enable: hasCellphone"/>
  • </p>
  • <script type="text/javascript">
  • var viewModel = {
  • hasCellphone: ko.observable(false),
  • cellphoneNumber: ""
  • };
  • </script>
  • 這個例子里,“Your cellphone number”后的text box 初始情況下是禁用的,只有當用戶點擊標簽 “I have a cellphone”的時候才可用。

    參數(shù)

    主參數(shù)

    聲明DOM元素是否可用enabled。

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

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

    其它參數(shù)

    注:任意使用JavaScript表達式

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

  • <button data-bind="enabled: parseAreaCode(viewModel.cellphoneNumber()) != '555'">
  • Do something
  • </button>
  • 依賴性

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

    11 disable 綁定

    目的

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

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

    12 value 綁定

    目的

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

    當用戶編輯表單控件的時候, view model對應的屬性值會自動更新。同樣,當你更新view model屬性的時候,相對應的元素值在頁面上也會自動更新。

    注:如果你在checkbox或者radio button上使用checked綁定來讀取或者寫入元素的 checked狀態(tài),而不是value 值的綁定。

    例子

  • <p>Login name: <input data-bind="value: userName"/></p>
  • <p>Password: <input type="password" data-bind="value: userPassword"/></p>
  • <script type="text/javascript">
  • var viewModel = {
  • userName: ko.observable(""), // Initially blank
  • userPassword: ko.observable("abc"), // Prepopulate
  • };
  • </script>
  • 參數(shù)

    主參數(shù)

    KO設置此參數(shù)為元素的value值。之前的值將被覆蓋。

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

    如果你提供的參數(shù)不是一個數(shù)字或者字符串(而是對象或者數(shù)組)的話,那顯示的value值就是yourParameter.toString() 的內(nèi)容(通常沒用,所以最好都設置為數(shù)字或者字符串)。

    不管什么時候,只要你更新了元素的值,那 KO都會將view model對應的屬性值自動更新。默認情況下當用戶離開焦點(例如onchange事件)的時候,KO才更新這個值,但是你可以通過第2個參數(shù)valueUpdate來特別指定改變值的時機。

    其它參數(shù)

    valueUpdate

    如果你使用valueUpdate參數(shù),那就是意味著KO將使用自定義的事件而不是默認的離開焦點事件。下面是一些最常用的選項:

    “change”(默認值)?- 當失去焦點的時候更新view model的值,或者是<select>

    “keyup”?– 當用戶敲完一個字符以后立即更新view model。

    “keypress”?– 當用戶正在敲一個字符但沒有釋放鍵盤的時候就立即更新view model。不像 keyup,這個更新和keydown是一樣的。

    “afterkeydown”?– 當用戶開始輸入字符的時候就更新view model。主要是捕獲瀏覽器的keydown事件或異步handle事件。

    上述這些選項,如果你想讓你的view model進行實時更新,使用“afterkeydown”是最好的選擇。

    例子:

  • <p>Your value: <input data-bind="value: someValue, valueUpdate: 'afterkeydown'"/></p>
  • <p>You have typed: <span data-bind="text: someValue"></span></p> <!-- updates in real-time -->
  • <script type="text/javascript">
  • var viewModel = {
  • someValue: ko.observable("edit me")
  • };
  • </script>
  • 注1:綁定下拉菜單drop-down list(例如SELECT)

    Knockout對下拉菜單drop-down list綁定有一個特殊的支持,那就是在讀取和寫入綁定的時候,這個值可以是任意JavaScript對象,而不必非得是字符串。在你讓你用戶選擇一組model對象的時候非常有用。具體例子,參考options綁定。

    類似,如果你想創(chuàng)建一個multi-select list,參考selectedOptions綁定。

    注2:更新observable和non-observable屬性值

    如果你用value綁定將你的表單元素和你的observable屬性關聯(lián)起來,KO設置的2-way的雙向綁定,任何一方改變都會更新另外一方的值。

    但是,如果你的元素綁定的是一個non-observable屬性(例如是一個原始的字符串或者JavaScript表達式) ,KO會這樣執(zhí)行:

    ◆ 如果你綁定的non-observable屬性是簡單對象,例如一個常見的屬性值,KO會設置這個值為form表單元素的初始值,如果你改變form表單元素的值,KO會將值重新寫回到view mode的這個屬性。但當這個屬性自己改變的時候,元素卻不會再變化了(因為不是observable的),所以它僅僅是1-way綁定。

    ◆ 如果你綁定的non-observable屬性是復雜對象,例如復雜的JavaScript 表達式或者子屬性,KO也會設置這個值為form表單元素的初始值,但是改變form表單元素的值的時候,KO不會再寫會view model屬性,這種情況叫one-time-only value setter,不是真正的綁定。

    例子:

  • <p>First value: <input data-bind="value: firstValue"/></p> <!-- two-way binding -->
  • <p>Second value: <input data-bind="value: secondValue"/></p> <!-- one-way binding -->
  • <p>Third value: <input data-bind="value: secondValue.length"/></p> <!-- no binding -->
  • <script type="text/javascript">
  • var viewModel = {
  • firstValue: ko.observable("hello"), // Observable
  • secondValue: "hello, again"// Not observable
  • };
  • ko.applyBindings(viewModel);
  • </script>
  • 依賴性

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

    13 checked 綁定

    目的

    checked綁定是關聯(lián)到checkable的form表單控件到view model上 - 例如checkbox(<input type='checkbox'>)或者radio button(<input type='radio'>) 。當用戶check關聯(lián)的form表單控件的時候,view model對應的值也會自動更新,相反,如果view model的值改變了,那控件元素的check/uncheck狀態(tài)也會跟著改變。

    注:對text box,drop-down list和所有non-checkable的form表單控件,用value綁定來讀取和寫入是該元素的值,而不是checked綁定。

    例子

  • <p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam"/></p>
  • <script type="text/javascript">
  • var viewModel = {
  • wantsSpam: ko.observable(true) // Initially checked
  • };
  • // ... then later ...
  • viewModel.wantsSpam(false); // The checkbox becomes unchecked
  • </script>
  • Checkbox關聯(lián)到數(shù)組

  • <p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam"/></p>
  • <div data-bind="visible: wantsSpam">
  • Preferred flavors of spam:
  • <div><input type="checkbox" value="cherry" data-bind="checked: spamFlavors"/> Cherry</div>
  • <div><input type="checkbox" value="almond" data-bind="checked: spamFlavors"/> Almond</div>
  • <div><input type="checkbox" value="msg" data-bind="checked: spamFlavors"/> Monosodium Glutamate</div>
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • wantsSpam: ko.observable(true),
  • spamFlavors: ko.observableArray(["cherry", "almond"]) // Initially checks the Cherry and Almond checkboxes
  • };
  • // ... then later ...
  • viewModel.spamFlavors.push("msg"); // Now additionally checks the Monosodium Glutamate checkbox
  • </script>
  • 添加radio button

  • <p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam"/></p>
  • <div data-bind="visible: wantsSpam">
  • Preferred flavor of spam:
  • <div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: spamFlavor"/> Cherry</div>
  • <div><input type="radio" name="flavorGroup" value="almond" data-bind="checked: spamFlavor"/> Almond</div>
  • <div><input type="radio" name="flavorGroup" value="msg" data-bind="checked: spamFlavor"/> Monosodium Glutamate</div>
  • </div>
  • <script type="text/javascript">
  • var viewModel = {
  • wantsSpam: ko.observable(true),
  • spamFlavor: ko.observable("almond") // Initially selects only the Almond radio button
  • };
  • // ... then later ...
  • viewModel.spamFlavor("msg"); // Now only Monosodium Glutamate is checked
  • </script>
  • 參數(shù)

    主參數(shù)

    KO會設置元素的checked狀態(tài)匹配到你的參數(shù)上,之前的值將被覆蓋。對參數(shù)的解析取決于你元素的類型:

    對于checkbox,當參數(shù)為true的時候,KO會設置元素的狀態(tài)為checked,反正設置為unchecked。如果你傳的參數(shù)不是布爾值,那KO將會解析成布爾值。也就是說非0值和非null對象,非空字符串將被解析成true,其它值都被解析成false。

    當用戶check或者uncheck這個checkbox的時候,KO會將view model的屬性值相應地設置為true或者false。

    一個特殊情況是參數(shù)是一個數(shù)組,如果元素的值存在于數(shù)組,KO就會將元素設置為checked,如果數(shù)組里不存在,就設置為unchecked。如果用戶對checkbox進行check或uncheck,KO就會將元素的值添加數(shù)組或者從數(shù)組里刪除。

    對于radio buttons,KO只有當參數(shù)值等于radio button value屬性值的時候才設置元素為checked狀態(tài)。所以參數(shù)應是字符串。在上面的例子里只有當view model 的spamFlavor 屬性等于“almond”的時候,該radio button才會設置為checked。

    當用戶將一個radio button選擇上的時候 is selected,KO會將該元素的value屬性值更新到view model屬性里。上面的例子,當點擊value= “cherry”的選項上, viewModel.spamFlavor的值將被設置為“cherry”。

    當然,最有用的是設置一組radio button元素對應到一個單個的view model 屬性。確保一次只能選擇一個radio button需要將他們的name屬性名都設置成一樣的值(例如上個例子的flavorGroup值)。這樣的話,一次就只能選擇一個了。

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

    其它參數(shù)

    依賴性

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

    14 options 綁定

    目的

    options綁定控制什么樣的options在drop-down列表里(例如:<select>)或者 multi-select 列表里 (例如:<select size='6'>)顯示。此綁定不能用于<select>之外的元素。關聯(lián)的數(shù)據(jù)應是數(shù)組(或者是observable數(shù)組),<select>會遍歷顯示數(shù)組里的所有的項。

    注:對于multi-select列表,設置或者獲取選擇的多項需要使用selectedOptions綁定。對于single-select列表,你也可以使用value綁定讀取或者設置元素的selected項。

    例1:Drop-down list

  • <p>Destination country: <select data-bind="options: availableCountries"></select></p>
  • <script type="text/javascript">
  • var viewModel = {
  • availableCountries: ko.observableArray(['France', 'Germany', 'Spain']) // These are the initial options
  • };
  • // ... then later ...
  • viewModel.availableCountries.push('China'); // Adds another option
  • </script>
  • 例2:Multi-select list

  • <p>Choose some countries you'd like to visit: <select data-bind="options: availableCountries" size="5" multiple="true"></select></p>
  • <script type="text/javascript">
  • var viewModel = {
  • availableCountries: ko.observableArray(['France', 'Germany', 'Spain'])
  • };
  • </script>
  • 例3:Drop-down list展示的任意JavaScript對象,不僅僅是字符串

  • <p>
  • Your country:
  • <select data-bind="options: availableCountries,
  • optionsText: 'countryName', value: selectedCountry, optionsCaption: 'Choose...'"></select>
  • </p>
  • <div data-bind="visible: selectedCountry"> <!-- Appears when you select something -->
  • You have chosen a country with population
  • <span data-bind="text: selectedCountry() ? selectedCountry().countryPopulation : 'unknown'"></span>.
  • </div>
  • <script type="text/javascript">
  • // Constructor for an object with two properties
  • var country =function (name, population) {
  • this.countryName = name;
  • this.countryPopulation = population;
  • };
  • var viewModel = {
  • availableCountries: ko.observableArray([
  • new country("UK", 65000000),
  • new country("USA", 320000000),
  • new country("Sweden", 29000000)
  • ]),
  • selectedCountry: ko.observable() // Nothing selected by default
  • };
  • </script>
  • 例4:Drop-down list展示的任意JavaScript對象,顯示text是function的返回值

  • <!-- Same as example 3, except the <select> box expressed as follows: -->
  • <select data-bind="options: availableCountries,
  • optionsText: function(item) {
  • return item.countryName + ' (pop: ' + item.countryPopulation + ')'
  • },
  • value: selectedCountry,
  • optionsCaption: 'Choose...'"></select>
  • 注意例3和例4在optionsText值定義上的不同。

    參數(shù)

    主參數(shù)

    該參數(shù)是一個數(shù)組(或者observable數(shù)組)。對每個item,KO都會將它作為一個<option> 添加到<select>里,之前的options都將被刪除。

    如果參數(shù)是一個string數(shù)組,那你不需要再聲明任何其它參數(shù)。<select>元素會將每個string顯示為一個option。不過,如果你讓用戶選擇的是一個JavaScript對象數(shù)組(不僅僅是string),那就需要設置optionsText和optionsValue這兩個參數(shù)了。

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

    其它參數(shù)

    optionsCaption

    有時候,默認情況下不想選擇任何option項。但是single-select drop-down列表由于每次都要默認選擇以項目,怎么避免這個問題呢?常用的方案是加一個“請選擇的”或者“Select an item”的提示語,或者其它類似的,然后讓這個項作為默認選項。

    我們使用optionsCaption參數(shù)就能很容易實現(xiàn),它的值是字符串型,作為默認項顯示。例如:

    <select data-bind='options: myOptions, optionsCaption: "Select an item...", value: myChosenValue'></select>

    KO會在所有選項上加上這一個項,并且設置value值為undefined。所以,如果myChosenValue被設置為undefined(默認是observable的),那么上述的第一個項就會被選中。

    optionsText

    上面的例3展示的綁定JavaScript對象到option上 – 不僅僅是字符串。這時候你需要設置這個對象的那個屬性作為drop-down列表或multi-select列表的text來顯示。例如,例3中使用的是設置額外的參數(shù)optionsText將對象的屬性名countryName作為顯示的文本。

    如果不想僅僅顯示對象的屬性值作為每個item項的text值,那你可以設置optionsText 為JavaScript 函數(shù),然后再函數(shù)里通過自己的邏輯返回相應的值(該函數(shù)參數(shù)為item項本身)。例4展示的就是返回item的2個屬性值合并的結果。

    optionsValue

    和optionsText類似, 你也可以通過額外參數(shù)optionsValue來聲明對象的那個屬性值作為該<option>的value值。

    經(jīng)典場景:如在更新options的時候想保留原來的已經(jīng)選擇的項。例如,當你重復多次調(diào)用Ajax獲取car列表的時候,你要確保已經(jīng)選擇的某個car一直都是被選擇上,那你就需要設置optionsValue為“carId”或者其它的unique標示符,否則的話KO找不知道之前選擇的car是新options里的哪一項。

    selectedOptions

    對于multi-select列表,你可以用selectedOptions讀取和設置多個選擇項。技術上看它是一個單獨的綁定,有自己的文檔,請參考: selectedOptions綁定。

    注:已經(jīng)被選擇的項會再options改變的時候保留

    當使用options綁定<select>元素的時候,如果options改變,KO將盡可能第保留之前已經(jīng)被選擇的項不變(除非是你事先手工刪除一個或多個已經(jīng)選擇的項)。這是因為options 綁定嘗試依賴value值的綁定(single-select列表)和selectedOptions綁定(multi-select列表)。

    依賴性

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

    15 selectedOptions 綁定

    目的

    selectedOptions綁定用于控制multi-select列表已經(jīng)被選擇的元素,用在使用options綁定的<select>元素上。

    當用戶在multi-select列表選擇或反選一個項的時候,會將view model的數(shù)組進行相應的添加或者刪除。同樣,如果view model上的這個數(shù)組是observable數(shù)組的話,你添加或者刪除任何item(通過push或者splice)的時候,相應的UI界面里的option項也會被選擇上或者反選。這種方式是2-way綁定。

    注:控制single-select下拉菜單選擇項,你可以使用value綁定。

    例子

  • <p>
  • Choose some countries you'd like to visit:
  • <select data-bind="options: availableCountries, selectedOptions: chosenCountries" size="5" multiple="true"></select>
  • </p>
  • <script type="text/javascript">
  • var viewModel = {
  • availableCountries: ko.observableArray(['France', 'Germany', 'Spain']),
  • chosenCountries: ko.observableArray(['Germany']) // Initially, only Germany is selected
  • };
  • // ... then later ...
  • viewModel.chosenCountries.push('France'); // Now France is selected too
  • </script>
  • 參數(shù)

    主參數(shù)

    該參數(shù)是數(shù)組(或observable數(shù)組)。KO設置元素的已選項為和數(shù)組里match的項,之前的已選擇項將被覆蓋。

    如果參數(shù)是依賴監(jiān)控屬性observable數(shù)組,那元素的已選擇項selected options項將根據(jù)參數(shù)值的變化(通過push,pop,或其它observable數(shù)組方法)而更新,如果不是,那元素的已選擇項selected options將只設置一次并且以后不在更新。

    不管該參數(shù)是不是observable數(shù)組,用戶在multi-select列表里選擇或者反選的時候,KO都會探測到,并且更新數(shù)組里的對象以達到同步的結果。這樣你就可以獲取options已選項。

    其它參數(shù)

    注:支持讓用戶選擇任意JavaScript對象

    在上面的例子里,用戶可以選擇數(shù)組里的字符串值,但是選擇不限于字符串,如果你愿意你可以聲明包含任意JavaScript對象的數(shù)組,查看options綁定如何顯示JavaScript對象到列表里。

    這種場景,你可以用selectedOptions來讀取或設置這些對象本身,而不是頁面上顯示的option表示形式,這樣做在大部分情況下都非常清晰。view model就可以探測到你從數(shù)組對象里選擇的項了,而不必關注每個項和頁面上展示的option項是如何map的。

    依賴性

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

    16 uniqueName 綁定

    目的

    uniqueName綁定確保所綁定的元素有一個非空的name屬性。如果該元素沒有name屬性,那綁定會給它設置一個unique的字符串值作為name屬性。你不會經(jīng)常用到它,只有在某些特殊的場景下才用到,例如:

    ◆ 在使用KO的時候,一些技術可能依賴于某些元素的name屬性,盡快他們沒有什么意義。例如,jQuery Validation驗證當前只驗證有name屬性的元素。為配合Knockout UI使用,有些時候需要使用uniqueName綁定避免讓jQuery Validation驗證出錯。

    ◆ IE 6下,如果radio button沒有name屬性是不允許被checked了。大部分時候都沒問題,因為大部分時候radio button元素都會有name屬性的作為一組互相的group。不過,如果你沒聲明,KO內(nèi)部會在這些元素上使用uniqueName那么以確保他們可以被checked。

    例子

  • <input data-bind="value: someModelProperty, uniqueName: true"/>
  • 參數(shù)

    主參數(shù)

    就像上面的例子一樣,傳入true(或者可以轉成true的值)以啟用uniqueName綁定。

    其它參數(shù)

    依賴性

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


    《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的KnockOut绑定的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    久久亚洲欧美日韩精品专区 | 国产在线观看一区 | 丁香影院在线 | 黄网站色欧美视频 | 97在线观看 | 国产在线91精品 | 日韩欧美在线一区 | 天天干天天拍天天操天天拍 | 一区精品久久 | 久久私人影院 | 国产精品久久久久久久久大全 | 欧美黑吊大战白妞欧美 | 亚洲第一色| 久久久高清| 国产专区一 | 伊人中文在线 | 成人免费看视频 | 午夜18视频在线观看 | 97在线观看免费高清完整版在线观看 | 久久综合在线 | 日韩有码在线播放 | 人人讲下载 | 成人在线视频免费观看 | 久草a在线 | 欧美日韩中文字幕在线视频 | 天天做日日爱夜夜爽 | 福利一区二区 | 天天操天天干天天爱 | 久草电影免费在线观看 | 久久久久一区二区三区 | 丁香 久久 综合 | 黄色一级在线免费观看 | 国产99免费视频 | 亚洲 欧美 另类人妖 | 九九九热精品免费视频观看网站 | 91丨九色丨蝌蚪丰满 | 最新av电影网址 | 91精品国产99久久久久久红楼 | 国模精品一区二区三区 | 在线观看视频一区二区三区 | 久久亚洲日本 | 91精品一区国产高清在线gif | 狠狠干激情| 日韩精品综合在线 | 国产亚洲精品美女 | 欧美日韩性视频 | 成年人视频在线免费播放 | 日韩欧美精品免费 | 五月婷婷丁香色 | 成人免费视频视频在线观看 免费 | 国际av在线| 久草综合视频 | 视频一区视频二区在线观看 | 91av视频免费观看 | 国产精品麻豆视频 | 国产精品原创视频 | 中文在线免费看视频 | 97视频免费看 | 视频国产 | 天天弄天天操 | 亚洲精品在线免费观看视频 | 国内精品久久久久久久久久 | 亚洲 欧美 综合 在线 精品 | 亚洲国产精品激情在线观看 | 精品国产一区二区三区久久久蜜月 | 久草在线观看 | 五月婷婷在线播放 | 超碰在线亚洲 | 久草在线视频资源 | 99婷婷| 日韩天堂在线观看 | www狠狠操| 日韩在线视频免费观看 | 亚洲高清视频在线观看免费 | 狠狠精品 | 亚洲成人免费观看 | 黄色一级大片免费看 | 国产激情免费 | 国产精品久久精品国产 | 久久有精品 | 免费看黄电影 | 欧美日韩国产在线精品 | 香蕉影视app | 又黄又刺激又爽的视频 | 2023亚洲精品国偷拍自产在线 | 九九热免费视频在线观看 | 国产成a人亚洲精v品在线观看 | 亚洲高清视频在线观看 | 超碰97在线看| 色av男人的天堂免费在线 | 久久久观看 | 黄色av免费看 | 毛片基地黄久久久久久天堂 | 亚洲精品国偷拍自产在线观看 | 激情欧美丁香 | 国产剧情一区二区 | 天天操人人要 | www.久久久.com | 亚洲一区久久久 | 91最新视频在线观看 | 国产在线精品区 | 黄色电影在线免费观看 | 午夜av在线播放 | 久久久久9999亚洲精品 | 成人黄色在线 | 天天色天天射天天干 | 91桃色在线观看视频 | 午夜精品一区二区三区免费 | 精品久久久久久一区二区里番 | 欧美男同网站 | 天天艹天天爽 | 欧美日韩视频在线一区 | 欧美一级免费在线 | 欧美激情综合色 | 免费国产在线精品 | 97超碰人人澡人人爱学生 | 午夜婷婷网 | 免费网站色 | 成人国产精品久久久春色 | 成人网在线免费视频 | 国产特级毛片aaaaaa高清 | 日韩三级视频在线观看 | 天天爱综合| 国产最顶级的黄色片在线免费观看 | www.av在线.com| 国产精品理论片在线观看 | 日本在线观看一区 | 日韩av偷拍 | 播五月综合 | 国产精品久久久久9999吃药 | 在线看成人片 | av高清不卡 | 国产精品成人久久 | 久久亚洲人 | 日韩精品中文字幕在线不卡尤物 | 92av视频 | 免费在线观看a v | 最近高清中文字幕在线国语5 | 国产精品123 | 婷婷色 亚洲 | 日韩国产欧美视频 | 免费日韩电影 | 99久久久久久国产精品 | 亚洲黄色成人网 | 国产精品黄网站在线观看 | 国内精品久久久久久久97牛牛 | 亚洲一区美女视频在线观看免费 | 在线高清 | www.亚洲精品视频 | 黄色三级免费看 | 久久不色 | 亚洲成人精品在线观看 | 国产精品99久久久久久人免费 | 99在线免费视频观看 | 国内免费久久久久久久久久久 | 欧美在线视频一区二区三区 | 日韩日韩日韩日韩 | www.人人草 | 又黄又刺激 | 一级黄色毛片 | 男女精品久久 | 97福利在线 | 福利久久久 | 天天操天天是 | 91日韩精品| 免费在线激情电影 | 欧美日韩亚洲在线观看 | 狠狠干天天射 | 韩国av一区二区三区 | 国产在线观看99 | 国产精品麻豆视频 | 日韩h在线观看 | 五月花丁香婷婷 | 亚洲午夜久久久久 | 国产精品一区二区久久 | 国产男男gay做爰 | 夜夜视频资源 | 日本久久高清视频 | 激情婷婷久久 | 国内精品久久久久久久久久 | 综合色天天 | 中文字幕免费成人 | 超碰在线9| 最新婷婷色| 手机成人av | 日韩精品一区二区三区水蜜桃 | 日韩在线播放欧美字幕 | 国产精品九九九九九 | 久草在线网址 | 国产99久久九九精品免费 | 色婷婷国产精品 | 色视频在线看 | 一区二区精品在线 | 综合五月婷婷 | 西西4444www大胆艺术 | 人人搞人人爽 | 成人欧美一区二区三区黑人麻豆 | 亚洲男女精品 | 日日狠狠 | 91福利视频在线 | 操操操影院 | 激情综合网五月 | 在线精品亚洲 | 日韩三级中文字幕 | 天堂av在线网站 | 992tv在线成人免费观看 | 国产精品毛片网 | 国产一区成人在线 | 成人av免费 | 91片网 | 亚洲国产成人精品久久 | 欧美日韩在线播放一区 | 国产免费精彩视频 | 国产在线国偷精品产拍 | 久久成人18免费网站 | 日韩在线视频观看免费 | 不卡的av片 | 久久国产麻豆 | 日韩高清免费无专码区 | 日韩色av色资源 | 久久91网 | 久久少妇| 懂色av懂色av粉嫩av分享吧 | 高清一区二区三区av | 色婷婷在线视频 | 69绿帽绿奴3pvideos | 国产资源精品在线观看 | 久久av高清 | 久久久精品网站 | 最新色视频 | 欧美专区国产专区 | 香蕉视频在线观看免费 | 色婷婷婷 | 毛片网在线播放 | 久久久久久久久久久网 | 国产精品入口麻豆 | 999久久久久久久久 69av视频在线观看 | 久久视频这里有久久精品视频11 | 视频在线观看入口黄最新永久免费国产 | 欧洲高潮三级做爰 | 天天射天天 | 亚洲成aⅴ人在线观看 | 亚洲另类人人澡 | 97伊人网| 美女久久久久久久 | 一区二区中文字幕在线播放 | 国产精品美乳一区二区免费 | 久久影院午夜论 | 九九免费精品视频在线观看 | 国产91亚洲 | 国产美女视频网站 | 日韩免费福利 | 亚洲最大激情中文字幕 | 久久天天躁夜夜躁狠狠85麻豆 | 97在线观看免费高清完整版在线观看 | 黄色亚洲大片免费在线观看 | 国产精品99精品 | 免费观看性生交大片3 | 国产最新在线 | 午夜精品久久一牛影视 | 最新av免费在线 | 国产成人福利在线观看 | 日本久久成人中文字幕电影 | 久久三级视频 | 欧美日韩国产综合网 | 久久久久久久久久久久久久av | 99精品国产99久久久久久福利 | 免费在线国产精品 | av大片免费| 日日夜夜亚洲 | 又黄又爽又色无遮挡免费 | 中文字幕一区二区在线观看 | 在线www色 | 午夜国产在线观看 | 国产高清视频在线免费观看 | 国内精品视频一区二区三区八戒 | 国产精品一区二区三区免费视频 | 国产一级片免费视频 | 日韩丝袜 | 欧美黑人xxxx猛性大交 | 97视频在线 | 黄色小视频在线观看免费 | 欧美激情精品久久久久久 | 天天弄天天干 | 日韩视频免费 | 国产成人精品在线播放 | 亚洲激情在线播放 | 中文字幕在线视频一区二区三区 | 亚洲毛片在线观看. | 91视频免费观看 | 欧美日韩不卡一区二区三区 | 天天操夜夜叫 | 亚洲作爱视频 | 欧美大荫蒂xxx | 中文字幕在线观看完整版 | 久久免费的视频 | 99在线观看免费视频精品观看 | 亚洲国产精品va在线看黑人 | 国产精品女主播一区二区三区 | 欧美日韩综合在线观看 | 国产精品自产拍在线观看中文 | 麻豆 free xxxx movies hd | 在线看中文字幕 | 91原创在线观看 | 麻豆果冻剧传媒在线播放 | 婷婷婷国产在线视频 | 天堂网中文在线 | 在线视频手机国产 | 91麻豆福利| 一区二区三区中文字幕在线观看 | 五月婷婷深开心 | 激情婷婷av | 天天色成人网 | 免费在线黄色av | 久久毛片网| 欧美一级免费高清 | 免费一级特黄毛大片 | 在线亚洲高清视频 | 国产成人免费观看 | 99久久er热在这里只有精品66 | 在线色视频小说 | 中文字幕免费国产精品 | 欧美日韩在线看 | 一区 二区电影免费在线观看 | 亚洲成人一二三 | 欧美一级性生活视频 | 久久亚洲国产精品 | 亚洲国产精品一区二区久久hs | 婷婷激情综合 | 91资源在线视频 | 国产高清视频在线 | 国产成人精品av | 欧美日韩国产区 | 91精品视频免费在线观看 | 狠狠狠色丁香婷婷综合久久88 | 国产黄色在线看 | 天天爽天天摸 | 日韩在线字幕 | 国产99亚洲 | 色视频一区 | 中文字幕第一页av | 日韩在线短视频 | 欧美日韩在线第一页 | 亚洲a成人v | 久久免费精品国产 | 国产精品一区二区久久精品爱涩 | 国产成人免费网站 | 日韩一区二区三区免费电影 | 中文永久免费观看 | 在线观看日韩国产 | 日韩一区二区三区不卡 | 99国产精品久久久久久久久久 | 国产精品一区二区久久精品爱涩 | 69xxxx欧美| 亚洲欧美日韩不卡 | 国产精品美女久久久久久久久久久 | 中文字幕免费高清av | 日韩欧美中文 | 国产精品一区二区三区在线 | 女人高潮一级片 | 大荫蒂欧美视频另类xxxx | 天天躁日日躁狠狠躁av中文 | 99精品视频免费看 | 狠狠色伊人亚洲综合网站野外 | 在线 精品 国产 | 91成人网在线 | 婷婷六月中文字幕 | 蜜臀av免费一区二区三区 | aaa日本高清在线播放免费观看 | 8x成人在线 | 欧美一级在线看 | 久久成| 国产1区在线观看 | 欧美91精品久久久久国产性生爱 | 伊人久久av | 狠狠干狠狠艹 | 美女黄色网在线播放 | 久久精品一区二区 | 亚洲性少妇性猛交wwww乱大交 | 99热国产在线 | 91一区二区三区久久久久国产乱 | 黄色av电影在线观看 | 久久久九九 | 99色网站 | 成人黄色小说视频 | 中文字幕电影高清在线观看 | 成人一级片免费看 | 亚洲精品久久久久中文字幕m男 | 波多野结衣在线观看视频 | 亚洲最大激情中文字幕 | 99国产在线观看 | 欧美精品免费在线观看 | 日韩大片在线观看 | 黄网站免费大全入口 | 免费在线视频一区二区 | 91一区啪爱嗯打偷拍欧美 | 国产999精品 | 亚洲免费精品视频 | 在线观看黄 | 免费成人在线视频网站 | 国产色就色| 天天干天天操天天射 | 免费视频久久久久 | 伊人影院在线观看 | 国产精品手机在线 | 麻豆91在线 | 99视频精品在线 | 日日夜夜精品 | 在线看片a | 精品 激情 | 久久国产精品色av免费看 | 在线a视频免费观看 | 最近中文字幕完整高清 | 国产精品九九九 | 日本精品一区二区三区在线播放视频 | 在线观看理论 | a级一a一级在线观看 | 欧美精品久久久久久久 | 亚洲欧美va | 99久久99久久精品 | 欧美日韩高清在线 | 天天色视频 | 欧美一区二区在线免费观看 | 亚洲国产中文在线观看 | 黄色中文字幕在线 | 国产精品久久久久久久久久不蜜月 | 久久精品网站视频 | 在线日韩一区 | 久久er99热精品一区二区 | 伊人影院得得 | 日韩精品 在线视频 | 国产免费激情久久 | www.夜夜操| 91久久影院 | 国产资源在线免费观看 | 成人亚洲精品久久久久 | 精品在线看 | 亚洲国产精品视频 | 摸阴视频| 美女中文字幕 | 丁香综合 | 玖玖色在线观看 | 97人人模人人爽人人喊网 | 日韩免费电影网站 | 99超碰在线观看 | 日韩视频在线观看视频 | 久久91久久久久麻豆精品 | 久久精品屋 | 国产亚洲一区二区在线观看 | 在线观看免费色 | 日本三级人妇 | 91在线超碰 | 国产一区二区精品91 | 亚洲视频www | 国产美女精品人人做人人爽 | 久草在线视频网 | 在线观看国产www | 91在线公开视频 | 久久综合婷婷 | 最新av在线播放 | av福利资源 | 精品国产一区二区三区四区在线观看 | aa级黄色大片 | 婷婷六月丁香激情 | 色爱区综合激月婷婷 | 国产日韩精品一区二区三区 | 亚洲高清视频一区二区三区 | 成年人黄色大片在线 | 美女久久久久久久久久 | 欧美激情精品久久 | 黄色片毛片 | 色综合久久综合网 | 中文字幕免费在线 | 久久99精品久久只有精品 | 日韩一二三区不卡 | 久久艹国产视频 | 免费在线国产精品 | 欧美日韩高清一区二区 | 色婷婷成人网 | 美女免费视频网站 | 成人宗合网 | 中文字幕第一页在线 | 国产男女无遮挡猛进猛出在线观看 | 少妇精69xxtheporn | 国产69精品久久久久99尤 | 久久久久激情电影 | 国产精品18久久久久久久 | 久久精品播放 | 中文字幕亚洲高清 | 国产精品免费一区二区三区 | 久久 国产一区 | 欧美成人a在线 | 亚洲精品999 | 日韩欧美视频在线 | 在线观看岛国片 | 国产午夜三级一区二区三 | 国产一区私人高清影院 | 国产精品99免视看9 国产精品毛片一区视频 | 在线精品在线 | 免费看v片网站 | 五月天免费网站 | 日韩精品一区在线播放 | 国产成人精品三级 | ww视频在线观看 | 国产xxxx| 在线观看精品黄av片免费 | 黄色小说视频在线 | 色www免费视频| 一级黄色片在线 | av超碰在线| 干狠狠| 国产精品免费在线观看视频 | 欧美 日韩 视频 | 日韩视频一区二区三区在线播放免费观看 | 国产不卡视频在线播放 | 丁香五月缴情综合网 | 97免费在线观看视频 | 天天操狠狠干 | 日韩美女一级片 | 视频一区在线播放 | 六月婷婷久香在线视频 | 97视频网站 | 久久久久久久国产精品 | 黄色免费在线视频 | 国产精品一区二区三区在线 | 在线观看视频一区二区三区 | 成人在线免费观看网站 | 国产精品毛片一区二区三区 | 天天操天天添天天吹 | 黄色网址在线播放 | 欧美一级激情 | 国产一级一片免费播放放 | 国产精品成人久久久久 | 日韩欧美视频在线 | 欧美日韩xxx | 婷婷丁香激情五月 | 久久久久久久久久久久久久免费看 | 国产xxxx做受性欧美88 | 天天曰夜夜操 | 国产视频1区2区 | 亚洲国产精品推荐 | 久久精品一级片 | 亚洲国产午夜精品 | www.超碰97.com | 精品国产乱码久久久久久天美 | 天天射天天爱天天干 | 三级动态视频在线观看 | 国产正在播放 | 欧美a级在线 | 久久www免费视频 | 久久国精品 | 国产精品永久免费在线 | 免费电影播放 | 天天干天天做 | 国产高清中文字幕 | 99r在线| 999成人精品| 91av手机在线 | 欧美激情综合网 | av电影免费在线 | 成人v| 成人av一区二区兰花在线播放 | 国产成人精品一区在线 | 日韩精品在线观看av | 超碰人在线 | 久久久免费精品 | 久久久久久国产精品美女 | 久久免费精品一区二区三区 | 色综合久久中文字幕综合网 | 毛片永久免费 | 成人教育av | 97精品免费视频 | av一本久道久久波多野结衣 | 免费成人在线电影 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产一级二级在线 | 国产成人在线观看免费 | 久久激情视频 久久 | 亚洲永久精品在线观看 | 日韩网站在线观看 | av黄色一级片| 狠狠的操你 | 97碰在线视频| 国产成人精品三级 | 在线免费观看av网站 | 天天精品视频 | 亚洲欧洲在线视频 | 午夜久久电影网 | 最近中文字幕视频完整版 | 9热精品 | 在线免费观看黄色小说 | 国产成人精品一区二区三区网站观看 | 国产精品午夜免费福利视频 | 久久免费美女视频 | 国产精品区在线观看 | 一区二区三区四区不卡 | 9ⅰ精品久久久久久久久中文字幕 | 免费观看91| 亚洲精品国产欧美在线观看 | 黄色的网站在线 | 国内精品免费久久影院 | 一 级 黄 色 片免费看的 | 久久精品精品电影网 | 午夜电影av | 色黄www小说| 丁五月婷婷 | 久久国产女人 | 国产精品久久久久久欧美 | 97精品久久人人爽人人爽 | 99热99热 | 日本中文字幕电影在线免费观看 | 中文字幕 在线看 | 亚洲 精品在线视频 | 97色婷婷成人综合在线观看 | 久久高清片 | 在线午夜 | 久久99亚洲网美利坚合众国 | 成人丝袜 | 国产精品美女久久久久久久久久久 | 国产精品www | 日韩午夜小视频 | 一区二区三区在线视频111 | 91精品免费在线 | 国产精品成人在线观看 | 超碰人人超 | 日本99热 | 久草电影免费在线观看 | 中文字幕黄色网址 | 午夜精品视频免费在线观看 | 日批视频国产 | 日日干狠狠操 | 正在播放国产一区二区 | 国产精品久久一区二区三区, | 日本精品视频在线观看 | 欧美日韩亚洲第一页 | 精品国产一区二区三区在线观看 | 午夜视频免费 | 97在线免费视频观看 | 精品视频成人 | 黄色免费网站下载 | 青青河边草免费观看完整版高清 | 国产麻豆果冻传媒在线观看 | 久久免费av电影 | 激情片av| 很污的网站 | 99精品视频一区 | 国产精品久久久久久久久久久久午 | 蜜臀久久99精品久久久酒店新书 | 久久久久久久av麻豆果冻 | 成年美女黄网站色大片免费看 | 99看视频在线观看 | 国产福利在线免费观看 | 日本精品久久久久中文字幕5 | 成人网在线免费视频 | 亚洲黄色大片 | www.夜夜夜| 亚洲精品黄 | 91看片网址| 五月婷婷中文网 | 成人网页在线免费观看 | 在线观看小视频 | 免费看av片网站 | 日韩在线观看视频一区二区三区 | 狠狠干夜夜爱 | 五月婷婷丁香色 | 欧美性生交大片免网 | 胖bbbb搡bbbb擦bbbb| 日本久久免费视频 | 高清不卡一区二区三区 | 亚洲综合情| 日本中文字幕一二区观 | 天天曰夜夜操 | 亚洲成 人精品 | 91在线视频观看 | 黄色av一区二区三区 | www.色午夜,com | 久久精品视频在线 | 色噜噜噜噜 | 日韩爱爱网站 | 美女很黄免费网站 | 亚洲国产精品一区二区尤物区 | 97人人爽人人 | 亚洲区另类春色综合小说校园片 | 中文字幕4| 中文字幕一区二区三区在线播放 | 久久久精品一区二区三区 | 日本黄色免费在线 | 欧美综合在线视频 | av千婊在线免费观看 | 天天射综合| 成人精品久久久 | 美女黄频网站 | 久久人人爽人人爽人人 | 黄色大全视频 | 丁香花在线观看免费完整版视频 | 91片黄在线观看动漫 | 日本三级全黄少妇三2023 | 日韩欧美视频一区二区 | 亚洲国产97在线精品一区 | 91完整视频 | 亚洲涩涩网站 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲欧美日韩一区二区三区在线观看 | 天堂av免费| 日韩伦理一区二区三区av在线 | 久久久免费视频播放 | 中文字幕一区二区三区四区在线视频 | av福利在线免费观看 | 成人精品影视 | 视频福利在线观看 | 天天天天天干 | 亚洲国产成人精品电影在线观看 | 国产在线97 | 久久免视频| 免费www视频 | 日日操夜夜操狠狠操 | www.久久久com| 精品视频成人 | 免费 在线 中文 日本 | 国产热re99久久6国产精品 | 蜜臀av.com| 亚洲清纯国产 | 国产午夜视频在线观看 | 在线观看你懂的网址 | 亚洲三级黄 | 婷婷激情综合五月天 | 免费网址你懂的 | 天天看天天干天天操 | 丁香六月婷 | 97高清免费视频 | free,性欧美 九九交易行官网 | 色多多污污| 99这里只有久久精品视频 | 97av在线| 国产精品福利一区 | 99久久久国产免费 | 日韩黄色在线 | 久操视频在线观看 | 国产精品青草综合久久久久99 | 超碰在线成人 | 91视频免费观看 | 欧美日韩亚洲第一页 | 五月花激情 | 视频 天天草 | 成人免费视频免费观看 | 成年人免费在线 | 久久看看| 久久久av免费 | 亚洲经典中文字幕 | 亚洲欧美视频一区二区三区 | 亚洲精品午夜久久久久久久久久久 | 97精品国产97久久久久久免费 | 久久综合电影 | 日韩婷婷 | 国产夫妻性生活自拍 | 日韩大片在线播放 | 91亚洲狠狠婷婷综合久久久 | 国产成人一区二区三区在线观看 | 国产美女无遮挡永久免费 | 久久久久伊人 | 91插插影库| 黄色成人av | 在线观看成人国产 | 国产黄a三级三级 | 三级黄色网址 | 日韩电影在线一区二区 | 福利视频 | 99视频这里有精品 | 狂野欧美激情性xxxx | 免费亚洲黄色 | 国产一区二区三区高清播放 | 国产伦理久久精品久久久久_ | 五月婷香蕉久色在线看 | 337p西西人体大胆瓣开下部 | 五月婷在线 | 超碰官网 | 国产精品美女久久 | 国产午夜影院 | 久久人人97超碰com | 91av九色| 天堂网一区| 亚州中文av | 在线观看成人小视频 | 亚洲欧洲xxxx | 久久免费av电影 | 24小时日本在线www免费的 | 99精品一区二区三区 | 激情视频一区二区 | 久久人人爽人人爽人人片av免费 | 久久午夜网 | 国产精品24小时在线观看 | 中文字幕在线免费看 | 99操视频 | 日韩在线观看免费 | 成人av动漫在线 | 欧美a级片网站 | 97电影手机版| 狠狠操在线 | 欧美夫妻性生活电影 | 九九九九免费视频 | 久久精品女人毛片国产 | 国内精品久久久精品电影院 | 中文字幕免费高 | 99在线播放 | 特级毛片网站 | 国产一区精品在线观看 | 成人亚洲免费 | 精品国内自产拍在线观看视频 | 婷婷国产一区二区三区 | 欧洲色吧 | 亚洲欧洲精品一区二区 | 五月婷婷国产 | 日韩精品一区二区免费视频 | 国产精品一区二区在线 | 欧美俄罗斯性视频 | 在线最新av| 久久综合久久综合这里只有精品 | 免费进去里的视频 | 国产免费av一区二区三区 | 国产精品婷婷午夜在线观看 | 九九久久精品 | 黄网站app在线观看免费视频 | 黄色软件网站在线观看 | 在线观看亚洲精品视频 | 国产一级视频在线 | 经典三级一区 | 狠狠躁日日躁狂躁夜夜躁av | 欧美日韩在线免费观看视频 | 免费视频黄色 | 精品九九九| 欧日韩在线 | 国内精品久久久久影院日本资源 | 日本韩国精品在线 | 中文字幕在线久一本久 | 欧日韩在线| 91人网站 | 一区二区久久久久 | 免费av大全| 91丨porny丨九色 | 日日久视频| 亚洲国产色一区 | 狠狠干狠狠操 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 色婷婷激情 | 日本中文乱码卡一卡二新区 | 免费欧美高清视频 | www中文在线 | 最近2019中文免费高清视频观看www99 | 91黄色小视频 | 天天人人| 日韩成人精品 | www.色午夜| 久久99网| 免费av试看| 国产成人资源 | 日韩网站在线免费观看 | 免费www视频 | 中文字幕最新精品 | 亚洲成年人免费网站 | 亚洲成人av片在线观看 | 一区二区在线影院 | 亚洲国产成人在线 | 色美女在线| 欧美福利精品 | 久久久久国产精品一区 | 国内亚洲精品 | 久久久久亚洲天堂 | 日韩一区二区三区在线观看 | 国产成人av电影 | 超碰在线最新地址 | 成人免费在线网 | 欧美精品网站 | 亚洲国产精品久久久久 | 久久国产精品成人免费浪潮 | 国产在线污 | 久久免费黄色大片 | 久久歪歪| 精品资源在线 | 国产精品久久av | 久久久久久久精 | 久久久亚洲国产精品麻豆综合天堂 | 成人片在线播放 | 日韩欧美综合在线视频 | 人人澡人人草 | 激情片av| 91夜夜夜| 久久dvd | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 国产破处在线视频 | 丁香综合五月 | 国产蜜臀av | 激情偷乱人伦小说视频在线观看 | 亚洲视频在线免费观看 | 91精品久久久久久综合乱菊 | 黄色在线网站噜噜噜 | 正在播放国产精品 | 日韩一二区在线观看 | 五月婷婷综合久久 | 亚州精品天堂中文字幕 | 久久久久这里只有精品 | 久九视频 | 国偷自产中文字幕亚洲手机在线 | 亚洲综合在线一区二区三区 | 日本三级在线观看中文字 | 婷婷色 亚洲 | 91av蜜桃| 亚洲理论视频 | 日韩综合在线观看 | 高潮久久久 | 中文字幕影视 | 高潮久久久久久久久 | 亚洲精品中文在线资源 | 亚洲精品国产精品国自产观看浪潮 | 99久久99久久精品免费 | 国产精品毛片一区二区在线看 | 在线黄av| av亚洲产国偷v产偷v自拍小说 | 久久精品国产一区二区三 | 麻豆久久久久久久 | 久久99亚洲网美利坚合众国 | 日韩高清成人在线 | 日本中文字幕网址 | 免费亚洲精品视频 | 日韩中文字幕免费在线观看 | 国产中文欧美日韩在线 | 伊人久久精品久久亚洲一区 | 日韩免费不卡av | 久久五月网 | 久草9视频 | 欧美成人91 | 91经典在线 | 亚洲国产美女久久久久 | 亚洲精品一区二区三区四区高清 | 成人看片 | 亚洲精品一区二区三区高潮 | 日韩av不卡在线播放 | 免费美女久久99 | 在线一区av | 四虎影视欧美 | 在线小视频 | 亚洲国产午夜精品 | 国产 日韩 在线 亚洲 字幕 中文 | 91九色蝌蚪视频网站 | 免费观看成年人视频 | 91av手机在线观看 | 久久国产精品99久久久久久丝袜 | 久久久久欧美精品999 | www.久久久com| 亚洲综合小说 | 激情视频二区 | adc在线观看 | 一性一交视频 | 在线精品一区二区 | 中文字幕在线资源 | 人人爽人人爽人人片 | 一区二区三区免费 | 久久久久久久99 | 亚洲高清视频在线播放 | 天堂在线免费视频 | 成人黄色在线电影 | 人人模人人爽 | 亚洲精品久久久蜜臀下载官网 | 中文字幕在线看视频国产中文版 | 久久久久久久影视 | 综合久久精品 | 欧美另类美少妇69xxxx | 国产视频欧美视频 | 成人免费网视频 | 日韩在线无 | av在线短片 | 在线观看视频免费播放 | 国产在线观看免费观看 | 色亚洲网 | 9在线观看免费高清完整版在线观看明 | 欧美aa一级片 | 美女网站视频免费黄 | 九九免费精品 | 97天天干 | 婷婷久久一区二区三区 | 日韩中文在线字幕 | 欧美成人性战久久 | 91在线视频免费播放 | 国产精品18毛片一区二区 | 精品国内 | 日本精品视频在线播放 | 亚洲好视频 | 500部大龄熟乱视频 欧美日本三级 | 一区二区三区精品在线视频 | 人人澡人人澡人人 | 国产免费一区二区三区最新6 | www.婷婷色| 久久人人精品 | 国产一级免费电影 | 国产精品高清一区二区三区 | 久草在在线视频 | 国产一级电影网 | 在线免费黄色片 | 日韩在线观看视频一区二区三区 |