Knockout.js映射JSON到可观察到的阵列(Knockout.js mapping a JS

2019-06-25 06:45发布

我想用Knockout.js建立一个客户给我REST的服务。 我有很多Repositorys的,我想通过不同的URL访问 - 所以我想出了使用显露的原型,这种模式的解决方案。 我的问题 :我不能找出如何映射与我的“数据”的ItemsProperty我从服务接收。

var Repository = function (url) {
    this.Url = url;
    this.Items = ko.observableArray([]);
    this.PendingItems = ko.observableArray([]);
};

Repository.prototype = function () {
    var  
        getAllItems = function () {
            var self = this;
            $.getJSON(self.Url, function (data) {
            // data=[{"Id":1,"Name":"Thomas","LastName":"Deutsch"},{"Id":2,"Name":"Julia","LastName":"Baumeistör"}]
                ko.mapping.fromJS(data, self.Items);
            });
        }, 
    ...


// i call it like this:
customerRepository = new Repository('http://localhost:9200/Customer');
customerRepository.getAllItems();

我认为这个问题是这样的:ko.mapping.fromJS(数据,self.Items); 但我不能找到这样做的正确方法。
:我究竟做错了什么? 我发现一个例子-他们都在做同样的,我认为: http://jsfiddle.net/jearles/CGh9b/

Answer 1:

我相信,fromJS的两个参数版本仅用于先前映射,即他们有一个隐含的空映射选项对象的对象。 由于您的映射是第一次已运行,它需要供应商,空的选项对象,像这样。

ko.mapping.fromJS(data, {}, self.Items);

http://jsfiddle.net/madcapnmckay/j7Qxh/1/

希望这可以帮助。



文章来源: Knockout.js mapping a JSON into an observable-array