Javascript 敲除JS:在“中显示不正确的值”;选择";标签

Javascript 敲除JS:在“中显示不正确的值”;选择";标签,javascript,knockout.js,Javascript,Knockout.js,视图模型: function Specialization(id, name) { var self = this; self.id = id; self.name = name; } function ObservableSpecialization() { var self = this; self.availableItem = ko.o

视图模型:

function Specialization(id, name) {
            var self = this;
            self.id = id;
            self.name = name;
        }

        function ObservableSpecialization() {
            var self = this;
            self.availableItem = ko.observable();
        }

        function ViewModel() {
            var self = this;
            self.specializations = ko.observableArray([]);
            self.availableSpecializations = [];

            self.addSpecialization = function () {
                self.specializations.push(new Specialization());
            }
            self.removeSpecialization = function (specialization) {
                self.specializations.remove(specialization)
            }
        }
文件加载:

$(document).ready(function () {
            var model = new ViewModel();

            var temp = [];
            $.each(window.availableSpecializations, function (i, item) {
                var specialization = new Specialization(item.ID, item.Name);
                model.availableSpecializations.push(specialization);
                temp.push(item.ID);
            });
            $.each(window.userSpecializations, function (i, item) {

                var idx = temp.indexOf(item.ID);
                if (idx != -1) {
                    var available = model.availableSpecializations[idx];
                    var specialization = new ObservableSpecialization();
                    specialization.availableItem = available;
                    model.specializations.push(specialization);
                }
            });

            ko.applyBindings(model);
        });
代码片段:

<tbody data-bind="foreach: specializations">
                        <tr>
                            <td>
                                <select name="Specializations" data-bind="options: $root.availableSpecializations, value: 'availableItem', optionsText: 'name'">
                                </select>
                            </td>

结果:

如下所示,所有值始终设置为列表中的第一项。。我猜ID没有绑定到所选项目。。。我哪里做错了

有两个问题: 首先,
specialization.availableItem
是可观察的,因此应该分配一个函数调用:
specialization.availableItem(available)

其次,在绑定字符串中有
值:“availableItem”
,它只是将select值设置为字符串“availableItem”。应不带引号:
value:availableItem


这里有两个补丁:

除非我有误解,否则您希望它显示“请选择”或类似的内容,而不是数组中的第一项?您尝试过选项吗?标题:“请在值属性后选择一个…”否。。在选择了几个项目之后。。我用正确的值正确地保存了它。。但当我再次回到页面编辑这些值时,它们都被设置为“心脏病学”,而不是保存为什么。