我有一个有一些值的网格,当我点击编辑时,我能够看到被调用函数中的值,但是当我设置我需要选择的值时,似乎没有在下拉列表中设置。我注意到的一件事是值设置为"1"
,但返回的数据只是1
,不确定是否会导致问题
我很确定这很简单,但却看不到我错过的东西。
objUserList.selectedPartner(data.ProgramID());
这具有值,但所选选项未设置
我的代码
var objUserList;
vmUserListModel = function () {
var self = this;
self.UserList = ko.observableArray([]); // Populate the users
self.Partners = ko.observableArray([]); // Populate the Partners
self.selectedPartner = ko.observable();
self.EditUser = function (index, data) {
console.log(data.ProgramID()); // here I can see the value but it shows as a number with the ""
objUserList.GetPartners(); // populate a the dropdown from an ajax call
objUserList.selectedPartner(data.ProgramID()); // in firebug console again the value is here
objUserList.selectedRole(data.RoleID());
}
}
HTML
调用上述编辑功能的编辑图标位置
<div data-bind="event: {click: $root.EditUser.bind($data, $index())}">
</div>
选择绑定
<select id="Partner" data-bind="options: objUserList.Partners, optionsText: 'ProgramName', optionsValue: 'ProgramID', value: objUserList.selectedPartner, optionsCaption: 'Select'">
</select>
我尝试使用现有小提琴重现,因为发现了相同的问题
http://jsfiddle.net/adriandcosta/h92xfd88/1/
工作代码
我通过ajax调用填充下拉列表。所以即使在ajax调用返回值之前,我也试图设置所选的值。添加valueAllowUnset: true
修复了问题
答案 0 :(得分:3)
小提琴的问题与你的问题无关。是value
绑定添加了两次不同的值,我修复了它并且它工作:
http://jsfiddle.net/0j2n2ay3/
关于您的问题,您是否已将select
重新设置为self.selectedPartner
,但在功能中您正在更新objUserList.selectedPartner
的值?如果您尝试设置self.selectedPartner(data.ProgramID());
该怎么办?