将一个选择选项绑定到一个对象
KnockoutJS - Binding a select option to an object
同上…
这是我的属性视图模型
function propertyViewModel() {
var self = this;
self.propertyTypeList = ko.observableArray([]);
self.selectedPropertyType = ko.observable();
}
这是我的模型属性类型:
function propertyTypeModel(id, name) {
this.Id = ko.observable(id);
this.Name = ko.observable(name);
}
我使用signalR从数据库获取数据,并在成功时调用以下客户端函数:
connection.client.populatePropertyTypeList = function (propertyTypeList) {
var mappedTypes = $.map(propertyTypeList, function (item) {
return new propertyTypeModel(item.Id, item.Name);
});
self.propertyTypeList(mappedTypes);
};
:
connection.client.populatePropertyDetails = function (property) {
self.selectedPropertyType(new propertyTypeModel(property.PropertyType.Id, property.PropertyType.Name));
};
第一个用所有可能的属性类型填充可观察数组,第二个获取相关的属性类型并将其绑定到selectedPropertyType。
一切都如预期的那样工作,直到我尝试引入一个下拉列表,并使用selectedPropertyType的名称预填充它,如下所示:
<select data-bind="options: propertyTypeList, optionsText: 'Name', value: selectedPropertyType"></select>
这使得我的可观察对象(selectedPropertyType)将其值更改为列表中的第一个可用选项。我的理解是,虽然此列表呈现propertyTypeList尚未填充,并导致selectedPropertyType默认为第一个可用值,但为什么Knockout在调用connection.client.populatePropertyDetails时不更新对象?
如果我引入一个只持有Id的新对象,我可以将选择列表绑定到Id,但是我想将它绑定到整个selectedPropertyType对象。这可能吗?
您在populatePropertyDetails
回调中创建了一个新对象。
尽管this.Id
和this.Name
与propertyTypeList
中对应的对象具有相同的属性值,但不是相同的对象。
试着把你的回调改成这样:
connection.client.populatePropertyDetails = function (property) {
var type = property.PropertyType,
list = self.propertyTypeList();
var foundType = ko.utils.arrayFirst(list, function(item) {
return item.Id() == type.Id && item.Name() == type.Name;
});
if(foundType) {
self.selectedPropertyType(foundType);
}
};
相关文章:
- 重置为下拉菜单中的未绑定选项
- 在dojo中将数据从一个选项卡绑定到另一个选项卡(打开选项卡?)
- Knockout js 条件选项绑定
- 为什么我的淘汰选项绑定不起作用
- 如何使用淘汰选项绑定从select中删除值
- KnockoutJS 选项绑定,无法在父上下文中设置值
- 将可选选项绑定到下拉列表
- 模板内选项绑定的奇怪行为
- KO选项绑定在页面重新加载时将值保存为默认值
- 如何使用Knockout JS数组映射根据输入条件使选择选项绑定默认值
- KnockoutJS选项绑定有重复值
- Knockout.js选项绑定在ViewModel中不起作用
- 选择选项绑定&jQuery验证
- 取消选定的选项绑定
- 击倒选项绑定,嵌套optionsValue
- 将一个选择选项绑定到一个对象
- 奇怪的knockout js选择选项绑定问题
- 删除选项绑定:如果选项被选中,如何从弹出框中动态删除选项
- 如何将两个可编辑选择选项绑定在一起
- 两个下拉选项绑定基于ID knockoutjs