Knockout选择绑定值未设置

时间:2014-08-16 14:30:23

标签: knockout.js

我有一个有一些值的网格,当我点击编辑时,我能够看到被调用函数中的值,但是当我设置我需要选择的值时,似乎没有在下拉列表中设置。我注意到的一件事是值设置为"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修复了问题

                    

1 个答案:

答案 0 :(得分:3)

小提琴的问题与你的问题无关。是value绑定添加了两次不同的值,我修复了它并且它工作: http://jsfiddle.net/0j2n2ay3/

关于您的问题,您是否已将select重新设置为self.selectedPartner,但在功能中您正在更新objUserList.selectedPartner的值?如果您尝试设置self.selectedPartner(data.ProgramID());该怎么办?