<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      KnockoutJS 3.X API 第四章 表單綁定(10) textInput、hasFocus、checked綁定

      textInput綁定目的

      textInput綁定主要用于<input>或者<textarea>元素。他提供了DOM和viewmodel的雙向更新。不同于value綁定,textinput綁定是實時更新的。

      例如:

      Login name:

      Password:

      ViewModel:

      源碼:

      <p>Login name: <input data-bind="textInput: userName" /></p>
      <p>Password: <input type="password" data-bind="textInput: userPassword" /></p>
       
      ViewModel:
      <pre data-bind="text: ko.toJSON($root, null, 2)"></pre>
       
      <script>
          ko.applyBindings({
              userName: ko.observable(""),        // Initially blank
              userPassword: ko.observable("abc")  // Prepopulate
          });
      </script>

      備注1:textInput綁定 VS value綁定

      雖然value結合也可以進行雙向文本框和視圖模型性能的結合,但是博主更喜歡textInput,因為他是實時更新的。value綁定與textInput綁定的主要的區別在于:

    3. 即時更新

      value默認情況下,只有當用戶將焦點從文本框移開后才會更新您的模型。textInput每次擊鍵或其他文本輸入時立刻更新模型。

    4. 瀏覽器的事件處理

      不同的瀏覽器有著文本輸入機制,如剪切,拖動,或接受自動完成建議的事件在不同的瀏覽器中機制是不一致。value綁定,有額外的選項,如valueUpdate: afterkeydown獲得對特定事件的更新,但是有可能不兼容所有的瀏覽器。

      textInput結合是專門用來處理各種瀏覽器的不同機制,即使在應對不同的文字輸入機制也能保持一致和直接更新模型。

      不要嘗試使用valuetextInput在相同的元素上進行綁定。

       

      hasFocus綁定目的

      hasFocus綁定是視圖模型屬性與DOM元素的焦點狀態綁定。它是一個雙向綁定,所以:

    5. 如果您的視圖模型屬性設置為true或者false,相關的元素將成為聚焦的或未聚焦。
    6. 如果用戶手動對焦或unfocuses相關元件,所述視圖模型屬性將被設置為truefalse相應。

      如果您正在構建中,編輯元素動態顯示復雜的形式,你想控制,用戶應該開始打字,或插入符的響應位置,這是非常有用的。

      示例1

      這個例子中當文本框當前具有焦點時則顯示消息,并可以使用一個按鈕通過編程方式觸發焦點。

      The textbox has focus

      源碼:

      <input data-bind="hasFocus: isSelected">
      <button data-bind="click: setIsSelected">Focus programmatically</button>
       <span data-bind="visible: isSelected">The textbox has focus</span> 
      <script>
      var viewModel = {
          isSelected: ko.observable(false),
          setIsSelected: function() { this.isSelected(true) }
      };
      ko.applyBindings(viewModel,document.getElementById("eq2"));
      </script>

      示例2

      因為hasFocus綁定是雙向綁定,這可以使切換的“編輯”模式更加便捷。

      Name:  

      Click the name to edit it; click elsewhere to apply changes.

      源碼:

      <p>
          Name: 
          <b data-bind="visible: !editing(), text: name, click: edit">&nbsp;</b>
          <input data-bind="visible: editing, value: name, hasFocus: editing" />
      </p>
      <p><em>Click the name to edit it; click elsewhere to apply changes.</em></p>
      <script>
      function PersonViewModel(name) {
          // Data
          this.name = ko.observable(name);
          this.editing = ko.observable(false);
               
          // Behaviors
          this.edit = function() { this.editing(true) }
      }
       
      ko.applyBindings(new PersonViewModel("Bert Bertington"),document.getElementById("eq3"));
      
      </script>

      checked綁定目的

      checked綁定主要用于復選框(<input type='checkbox'>)或單選按鈕(<input type='radio'>) 并與視圖模型屬性進行綁定。

      當用戶更改了表單控件,這將更新您的視圖模型屬性的值。同樣,當您更新您的視圖模型的值,也將直接反映到表單控件上。

      注意:對于文本框,下拉列表,以及所有以非可勾選表單控件,需要使用value綁定或者textInput綁定讀寫元素的值,而不是checked綁定。

      示例1:復選框綁定

      Send me spam:

      源碼:

      <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>

      示例2:多復選框附帶數組綁定

      Send me spam:

      Preferred flavors of spam:
      Cherry
      Almond
      Monosodium Glutamate

      源碼:

      <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>

      示例3:單選按鈕

      Send me spam:

      Preferred flavor of spam:
      Cherry
      Almond
      Monosodium Glutamate

      源碼:

      <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>

      參數

      • 主要技術參數

        KO設置元素的選中狀態,以配合您的參數值。任何以前選中的狀態將被覆蓋。您的參數被解釋的方式取決于你綁定元素是什么類型:

        • 對于復選框,當參數值true時KO將設置為元素為選中狀態,當它為false則為未選中狀態。如果你給定的不是一個布爾值,KO會松散地解釋。這意味著,非零數字和非null對象和非空字符串都將被解釋為true,而零,nullundefined,和空字符串將被解釋為false

          當用戶選中或取消選中該復選框,將KO你的模型屬性設置為truefalse

          如果你的參數解析為一個被給予array數組。在這種情況下,KO將設置檢查DOM中value屬性是否與數組值匹配,如果值匹配則被選中,如果不匹配則不勾選。

          當用戶選中或取消選中該復選框,將KO更改對應視圖模型屬性的值。就像示例2一樣。

        • 對于單選按鈕,KO將檢查視圖模型的值是否等于單選按鈕DOM節點的value屬性或檢查視圖模型屬性值是否等于checkedValue參數指定的值。就像示例3一樣。

          當選擇了用戶改變其單選按鈕,KO會設置模型屬性值為選定的單選按鈕的值。像示例3中,點擊value="cherry"的單選按鈕后將設置viewModel.spamFlavor"cherry"

        如果你的參數是監控屬性類型,每當值改變綁定將更新元素的選中狀態。如果該參數是非監控屬性,它只會在首次運行時設置元素的選中狀態,以后再不會更新。

      • 其他參數

        • checkedValue

          checkedValue參數定義了使用值與checked綁定結合,而不是元素的value屬性。如果你想要的值是一個字符串(如整數或對象)以外的東西,或者你想動態設置的值,這非常有用。

          例如下邊的例子:

          源碼:

    7. <!-- ko foreach: items -->
          <input type="checkbox" data-bind="checkedValue: $data, checked: $root.chosenItems" />
          <span data-bind="text: itemName"></span>
      <!-- /ko -->
       
      <script type="text/javascript">
          var viewModel = {
              items: ko.observableArray([
                  { itemName: 'Choice 1' },
                  { itemName: 'Choice 2' }
              ]),
              chosenItems: ko.observableArray()
          };
      </script>

      如果你的checkedValue參數是一個監控屬性,當值的變化和元素是否被選中,綁定將更新checked模型屬性。對于復選框,它會從數組刪除舊值并添加新的價值。對于單選按鈕,它只會更新模型值。

      posted @ 2016-10-11 10:35  SmallProgram  閱讀(3361)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产一区二区三区卡| 久热在线中文字幕色999舞| 少妇熟女久久综合网色欲| 日本欧美一区二区三区在线播放 | 国产色一区二区三区四区| 大丰市| 亚洲精品中文字幕一二三| 99精品国产综合久久久久五月天| 国产亚洲AV电影院之毛片| 国产精品小仙女自拍视频| 微拍福利一区二区三区| 色色97| 国产毛片欧美毛片久久久| 综合久久av一区二区三区| 四虎永久免费精品视频| 国偷自产一区二区三区在线视频 | 人妻少妇久久中文字幕一区二区 | 熟女精品视频一区二区三区| 亚洲无av中文字幕在线| 免费国产一级特黄aa大片在线| 在线高清免费不卡全码| 国产成人精品亚洲精品密奴| 欧美精品一区二区三区中文字幕| 风韵丰满妇啪啪区老老熟女杏吧| 狠狠婷婷综合久久久久久| 美日韩精品一区二区三区| 国产第一页浮力影院入口| 男同精品视频免费观看网站| 99精品国产一区二区三| 国产精品免费中文字幕| 欧美成人无码a区视频在线观看| 玩弄放荡人妻少妇系列| 亚洲国产综合性亚洲综合性 | 亚洲一区中文字幕第十页| 国产超级va在线观看视频| 自拍视频亚洲精品在线| 一区二区三区精品视频免费播放| 亚洲人成网网址在线看| 久久中文字幕国产精品| 久久天堂无码av网站| 日韩精品理论片一区二区|