Knockout - 不从可观察数组中检索数据

时间:2017-07-26 08:32:38

标签: knockout.js

我正在开发Web GUI的一部分,该GUI显示在云中创建租户期间可用的VM集。表示此集合的对象如下所示:

function BoxTemplate(data) {
    var self = this;
    self.id = ko.observable(0);
    self.name = ko.observable("");
    self.description = ko.observable("");

    if (data) {
        self.id(data.Id);
        self.name(data.Name);
        self.description(data.Description);
    }
}

在下一步中,我试图从上述对象的数组中检索ID。代码如下:

var boxTemplatesIds = ko.observableArray([]);

for (var i = 0; i < self.boxTemplatesList.length; i++) {
    boxTemplatesIds.push(self.boxTemplatesList()[i].id);
}

var boxTemplatesIdsAsJson = ko.toJSON(boxTemplatesIds);

然后boxTemplatesIdsAsJson作为请求正文中的参数传递。但是,当我打印它时,它是空的,并且null被传递给底层REST API中的相应参数。我尝试了不同的方法,但它没有。你能帮我弄清楚我的代码有什么问题吗?我将不胜感激。 :)

1 个答案:

答案 0 :(得分:1)

如果self.boxTemplatesListBoxTemplate对象的可观察数组,则id属性为ko.observable,您需要使用圆括号来获取它的值({ {1}}):

self.boxTemplatesList()[i].id()

或仅使用for (var i = 0; i < self.boxTemplatesList.length; i++) { boxTemplatesIds.push(self.boxTemplatesList()[i].id()); }

map