使用JSON更新ViewModel数据

    对于加载,更新您接到之数及您的view model上。

为要view
model数据连串化方便(包括连串化observables等格式),Knockout提供了2独援函数:

    对于保存,让您的view
model数据易成简单的JSON格式,以方便使用下边的艺来保存数据。

  2.ko.toJSON — 拿view model对象转化成JSON字符串。原理就是是:先调在view
model上调用ko.toJS,然后调用浏览器原生的JSON
连串化器拿到结果。注:一些一味浏览器版本不匡助原生的JSON
序列化器(例如:IE7和从前的版),你得引用json2.js类库。

要你打劳动器端获取数据并且更新至view
model上,最简单易行的法是和谐实现。例如

返回的JSON数据为

前言

    var someJSON = '{ "firstName": "Aehyok1","lastName": "Leo1"}';
    var parsed = JSON.parse(someJSON);
    debugger;
    viewModel.firstName(parsed.firstName);

加载或保存数据

json 1

要为服务器端发送数据:

var data = {} ;   /////JSON数据格式的data
$.post("/some/url", data, function(returnedData) {
    ////如果向服务端发送数据成功,那么此回调函数就会被执行
})

预先看此前的价

讲明一个view model:

实施下

json 2

欠view model包含observable类型的价值,倚重型的值dependent
observable以及借助数组observable
array,和平日对象。你可像如下代码一样采纳ko.toJSON将是转化成为服务器端使用的JSON
字符串:

json 3

$.getJSON("/some/url", function (data) {
   ///可以使用Data来更新ViewModel,并且通过Ko来更新UI元素 
};
var plainJs = ko.toJS(viewModel);
<script type="text/javascript">
    var viewModel = {
        firstName: ko.observable("Aehyok"),
        lastName: ko.observable("Leo"),
        pets: ko.observableArray(["Dog", "Cat", "Fish"]),
        Type:"Customer"
    };

    view.hasALotOfPets = ko.dependentObservable(function () {
        return this.pets().length() > 2;
    }, viewModel);
    ko.applyBindings(viewModel);
</script>

或,假若您不惦记用jQuery,你可就此此外其余的艺术来读取或保存JSON数据。所以,Knockout需要而做的仅仅是:

Knockout不限量而用任何技术加载与封存数据。你可拔取其他技术同服务器来互。用的绝多之是以jQuery的Ajax协理,例如:getJSON,post和ajax。你可因此这一个主意从服务器端获取数据:

    var jsonData = ko.toJSON(viewModel);
    alert(jsonData);

或者,系列化从前,你想赢得JavaScript简单对象的说话,直接下像这样同样采取ko.toJS:

返回的JavaScript对象为

而,很多开发人士仍然喜欢使用同样种好用而不是每便都写代码的章程来转化数据及view
model上,尤其是view
model有好多性能或者嵌套的数据结构的早晚,那大有由此,因为可以省去很多代码量。knockout.mapping插件可以帮忙你成功及时一点。

json 4

转化ViewModel数据到JSON格式

Knockout可以实现丰富复杂的客户端交互,可是几乎拥有的web应用程序都设与劳务器端沟通数据(至少为本地存储需要连串化数据),交流数据最有利的饶是动JSON格式
– 大多数的Ajax应用程序也是选择这种格式。

由于view
model都是JavaScript对象,所以若要接纳正式的JSON序列化工具被转会view
model为JSON格式。例如,可以应用JSON.serialize()(新本子浏览器才支撑的原生方法),或者利用json2.js类库。可是你的view
model可能包括observables,倚重对象dependent
observables和observable数组,有或无克挺好的体系化,你需要协调额外的处理一下数码。

  1.ko.toJS — 仿制你的view model对象,并且替换所有的observable
对象啊目前底值,这样你可取一个绝望之跟Knockout无关的数据copy。

json 5

有的是状态下,最直白的法子就是绝简易以最灵敏的点子。当然,假设您更新了view
model的性能,Knockout会自动帮忙你更新相关的UI元素的。

json 6

相关文章

网站地图xml地图