在Knockout中向对象数组添加新项

时间:2015-03-25 17:32:49

标签: javascript arrays knockout.js

我使用Knockout.js获得了以下关联数组。

self.users = ko.observableArray([{name: "Unassigned", value: null}]);

在单击按钮的应用程序中的某个时刻,我必须开始向此数组添加更多值。但是,我不太清楚该怎么做。以前,我只是使用像这样的通用数组:

$.each(data.users, function(index, user)
{
   vm.users.push(user.first_name + " " + user.last_name);
});

现在我必须处理多个值,我不知道如何将项目和值都推送到数组。有一个简单的方法吗?

更新

根据Milimetric的建议,我将我的代码更新为以下内容:

vm.users.push({name: user.first_name + " " + user.last_name, value: index + 1});

然后我回去并将我的观点更新为以下内容:

<select id="ticket_assignee" name="ticket[assignee]" data-bind="options: users.name, value: assignee"></select>

在更新视图之前,我在下拉列表中获得了正确数量的项目。更新视图后,我只有一个值为“d”的值。我的猜测是d来自Unassigned中的最后一个字母。我做错了导致值无法正确显示吗?

1 个答案:

答案 0 :(得分:0)

在聊天中与CrimsonChris交谈之后,他得出的结论是,使用一个物体阵列,我正在尝试做的事就是矫枉过正。他指出,由于我只是想创建一个对象的下拉列表,我可以使用Figure 3 from the Knockout "options" binding documentation作为当前任务的指南。在遵循该示例之后,通过使用options,optionsText和value bindings,我能够完美地完成所有工作。