<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 第七章 其他技術(1) 加載和保存JSON數據

      Knockout允許您實現復雜的客戶端交互性,但幾乎所有Web應用程序還需要與服務器交換數據,或至少將本地存儲的數據序列化。 最方便的交換或存儲數據的方式是JSON格式 - 大多數Ajax應用程序今天使用的格式。

      加載或保存數據

      Knockout不強制您使用任何一種特殊技術來加載或保存數據。 您可以使用任何適合您所選擇的服務器端技術的機制。 最常用的機制是jQuery的Ajax方法,例如getJSON,post和ajax。 您可以從服務器獲取數據:

      $.getJSON("/some/url", function(data) { 
          // Now use this data to update your view models, 
          // and Knockout will update your UI automatically 
      })

      或者您可以向服務器發送數據:

      var data = /* Your data in JSON format - see below */;
      $.post("/some/url", data, function(returnedData) {
          // This callback is executed if the post was successful     
      })

      或者,如果您不想使用jQuery,則可以使用任何其他機制來加載或保存JSON數據。 所以,所有Knockout需要幫助你做的是:

      • 要保存,請將您的視圖模型數據轉換為簡單的JSON格式,以便可以使用上述其中一種技術發送它
      • 要加載,請使用您通過上述其中一種方法收到的數據更新視圖模型

      將視圖模型數據轉換為純JSON

      您的視圖模型是JavaScript對象,因此在某種意義上,您可以使用任何標準JSON序列化程序(例如JSON.stringify(現代瀏覽器中的本地函數)或json2.js library)將它們序列化為JSON。 但是,您的視圖模型可能包含observables,computed observables和observable數組,這些數組實現為JavaScript函數,因此不會在不執行額外工作的情況下完全序列化。

      為了便于序列化視圖模型數據,包括observables等,Knockout包括兩個幫助函數:

      • ko.toJS — 這克隆了你的視圖模型的對象圖,用每個observable替換了observable的當前值,所以你得到一個只包含你的數據和沒有Knockout相關的工件
      • ko.toJSON — 這將生成一個JSON字符串,表示您的視圖模型的數據。 在內部,它簡單地在您的視圖模型上調用ko.toJS,然后在結果上使用瀏覽器的原生JSON序列化程序。 注意:為了在沒有本地JSON序列化器(例如,IE 7或更早版本)的舊版瀏覽器上工作,還必須引用json2.js庫。

      例如,定義視圖模型如下:

      var viewModel = {
          firstName : ko.observable("Bert"),
          lastName : ko.observable("Smith"),
          pets : ko.observableArray(["Cat", "Dog", "Fish"]),
          type : "Customer"
      };
      viewModel.hasALotOfPets = ko.computed(function() {
          return this.pets().length > 2
      }, viewModel)

      它包含可觀察量,計算可觀察量,可觀察數組和平均值的混合。 您可以將其轉換為適用于使用ko.toJSON發送到服務器的JSON字符串,如下所示:

      ar jsonData = ko.toJSON(viewModel);
       
      // Result: jsonData is now a string equal to the following value
      // '{"firstName":"Bert","lastName":"Smith","pets":["Cat","Dog","Fish"],"type":"Customer","hasALotOfPets":true}'

      或者,如果您只想在序列化之前使用純JavaScript對象圖,請使用ko.toJS如下:

      var plainJs = ko.toJS(viewModel);
       
      // Result: plainJS is now a plain JavaScript object in which nothing is observable. It's just data.
      // The object is equivalent to the following:
      //   {
      //      firstName: "Bert",
      //      lastName: "Smith",
      //      pets: ["Cat","Dog","Fish"],
      //      type: "Customer",
      //      hasALotOfPets: true
      //   }

      注意,ko.toJSON接受與JSON.stringify相同的參數。 例如,在調試Knockout應用程序時,對視圖模型數據進行“實時”表示是非常有用的。 要為此目的生成格式良好的顯示,可以將空格參數傳遞給ko.toJSON并綁定到視圖模型,如:

      <pre data-bind="text: ko.toJSON($root, null, 2)"></pre>

      使用JSON更新視圖模型數據

      如果您從服務器加載了一些數據,并希望使用它來更新您的視圖模型,最直接的方法是:

      // Load and parse the JSON
      var someJSON = /* Omitted: fetch it from the server however you want */;
      var parsed = JSON.parse(someJSON);
       
      // Update view model properties
      viewModel.firstName(parsed.firstName);
      viewModel.pets(parsed.pets);

      在許多情況下,這種直接方法是最簡單和最靈活的解決方案。 當然,當您更新視圖模型上的屬性時,Knockout將會更新可見的UI來匹配它。

      然而,許多開發人員更喜歡使用更多的基于約定的方法來使用傳入數據更新他們的視圖模型,而不需要為每個要更新的屬性手動編寫一行代碼。 如果您的視圖模型具有許多屬性或深層嵌套的數據結構,這可能是有益的,因為它可以大大減少您需要編寫的手動映射代碼的數量。 有關此技術的更多詳細信息,請參閱以后章節的knockout.mapping插件。

      posted @ 2016-10-19 09:54  SmallProgram  閱讀(1600)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩人妻无码一区二区三区| 国产精品自拍视频我看看| 成人无码一区二区三区网站| 深夜精品免费在线观看| 亚洲国产av无码精品无广告 | 久久久亚洲欧洲日产国码aⅴ| 五月丁香啪啪| 国产精品无码av在线一区| 国产又色又爽又黄的在线观看| 精品人妻一区二区三区四区在线 | 国产内射xxxxx在线| 亚洲a人片在线观看网址| 国产一区二区三区小说| 亚洲性猛交xxxx| 日韩一本不卡一区二区三区| 日本一区二区三区在线 |观看| 日本一卡2卡3卡4卡无卡免费| 国产办公室秘书无码精品99| 欧美国产日产一区二区| 亚洲国产成人精品女久久| 欧美日韩一区二区综合| 国产精品中文字幕自拍| 精品亚洲欧美高清不卡高清 | 国产成人亚洲综合图区| 久久亚洲精品中文字幕| 国产美女久久久亚洲综合 | 南溪县| 成人资源网亚洲精品在线| 久久综合伊人77777| 亚洲AV成人片不卡无码| 一级女性全黄久久生活片| 国产精品自拍午夜福利| 青青草原国产AV福利网站| 亚洲男女羞羞无遮挡久久丫| 国产亚洲欧美精品久久久| 116美女极品a级毛片| 少妇被爽到高潮喷水久久欧美精品| 久久精品夜色国产亚洲av| 国产精品一码二码三码| 长沙市| 欧美性猛交xxxx乱大交极品|