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

Adding new item to object array in Knockout

我有以下使用 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 中的最后一个字母。是不是我做错了什么导致数值显示不正确?

在聊天中与 CrimsonChris 交谈后,他得出的结论是,使用对象数组来完成我正在尝试做的事情是多余的。他指出,因为我只是想创建一个对象下拉列表,所以我可以使用 Figure 3 from the Knockout "options" binding documentation 作为我当前任务的指南。在遵循该示例之后,我能够通过使用选项、optionsText 和值绑定使一切正常工作。