gpt4 book ai didi

javascript - KnockoutJS 在模型上选择

转载 作者:行者123 更新时间:2023-11-30 18:32:36 24 4
gpt4 key购买 nike

我正在尝试使用 KnockoutJS 绑定(bind)一对多映射,其中 1 个邮政编码可以有多个“代理”。我有以下类(class):

function CaseAssignmentZipCode(zipcode, agent) {
var self = this;
self.zipcode = ko.observable(zipcode);
self.agent = ko.observable(agent);
}

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

function ZipcodeAgentsViewModel() {
var self = this;
self.caseAssignmentZipCodes = ko.observableArray([]);
self.agents = ko.observableArray([]);

jdata = $.parseJSON($('#Agents').val());
var mappedAgents = $.map(jdata, function (a) { return new Agent(a.Id, a.Name) });
self.agents(mappedAgents);

var dictAgents = {};
$.each(mappedAgents, function (index, element) {
dictAgents[element.id] = element;
});

var jdata = $.parseJSON($('#CaseAssignmentZipCodes').val());
var mappedZipcodeAgents = $.map(jdata, function (za) { return new CaseAssignmentZipCode(za.ZipCode, dictAgents[za.UserId], false) });
self.caseAssignmentZipCodes(mappedZipcodeAgents);
}

var vm = new ZipcodeAgentsViewModel()
ko.applyBindings(vm);

我的绑定(bind)看起来像这样:

<table>
<thead><tr><th>Zipcode Agents</th></tr></thead>
<tbody data-bind="foreach: caseAssignmentZipCodes">
<tr>
<td><input data-bind="value: zipcode"></td>
<td><select data-bind="options: $root.agents, value: agent, optionsText: 'name'"></select></td>
<td><a href="#" class="image-button small delete-small no-text" data-bind="click: $root.removeZipcode">Remove</a></td>
</tr>
</tbody>
</table>

第一次一切都很好,表格和选择字段正确显示。但是,当我更改任何选择元素上的选定值时,没有任何反应。我已经将其他元素绑定(bind)到它们并且这些元素不会更新,并且我尝试使用 .subscribe() 来监听更新事件,但这也不会触发。

我预计我建立/绑定(bind)这些关系的方式有问题,但我想不出办法来挽救我的生命。

谢谢!

最佳答案

我认为你需要添加

self.agents = ko.observableArray([]); 

在 ZipcodeUsersViewModel 的顶部

关于javascript - KnockoutJS 在模型上选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9182641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com