用arrayMap函数敲除可观察量的observablearray

时间:2017-04-28 07:59:17

标签: javascript knockout.js

我在创建可观察的可观察数组时遇到问题。我搜索谷歌但没有找到解决方案。我可以注意到它可能很简单,因为我是Knockout的新手。 但我有模特:

eventsModel = function () {
   var self = this;

   self.endTimeInMinutes = ko.observable();
   self.events = ko.observableArray([]);
   self.startTripTime = ko.observable();
   self.endTripTime = ko.observable();
}

我想在我的数组中有一个observables项目,所以我写了一个ViewModel并绑定了模型。

eventItemViewModel = function(o) {
    var self = this;

    self.BeginInMinutes = ko.observable(o.BeginInMinutes);
    self.Type = ko.observable(o.Type);
};

var events = new eventsModel();
ko.applyBindings(events);

我正在使用AJAX获取数据:

function GetEvents() {
    $.ajax({
        url: "Contact.aspx/GetEvents",
        async: true,
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        success: function (data) {
            var temp = data.d;
            endTimeInMinutes = temp["EndInMinutes"];
            eventsArr = temp["Events"];
            eventsArray = JSON.parse(JSON.stringify(eventsArr));
            events.events(eventsArray);
        },
    });
}

在此之后我有一个可观察的数组,但里面没有observables值。现在我尝试添加我的AJAX方法:

events.events(ko.utils.arrayMap(eventsArray, function(eve) {return new eventItemViewModel(eve); }));

但是,如果我对此console.log进行了操作,那么我将获得一组对象,并且在每个对象中都有BeginInMinutes和Type,但它的值类似于{{1 }}

我真的被它搞砸了,我相信我在某个地方犯了一些非常简单的错误。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你已经有一个observableArray内有observable元素,你的问题就在于获取这些价值
使用此代码获取数组中第一个元素的实际值。

console.log(events.events()[0].BeginInMinutes());