我有一个可观察的CommitteeTypes,它包含一个对象数组:
self.CommitteeTypes = ko.observableArray();
self.init = function() {
self.CommitteeTypes([
{
Meeting: {descr: 'Committee', meeting_type_id: 'C' },
Ranks: [{}, {}, ...],
Roles: [{}, {}, ...]
}
]);
}
然后,我会看到一个“选择”下拉列表:
<select data-bind="options: $root.CommitteeTypes, optionsText: function(item) { return item.Meeting.descr; }, optionsValue: Meeting.comm_meeting_type, optionsCaption: 'Select...'"></select>
OptionsText绑定正常工作并按预期返回“Committee”,但OptionsValue绑定不工作,它抛出错误:“引用错误:Meeting is not defined”,如果我用引号将其括起来,它只会使值为空。
传入的对象是我所期望的,因为我可以通过lambda来访问它,但是如果没有lambda,这就不起作用了。我错过了什么吗?我几乎在另一个页面上使用了这个完全相同的绑定(除了lambda)。但是我似乎找不到我在这里做错了什么。
1条答案
按热度按时间w6mmgewl1#
如果在
optionsValue
绑定中使用带引号的"Meeting.meeting_type_id"
,它将查找该确切属性:committeeObject["Meeting.meeting_type_id"]
,而不是嵌套值,因为knockout不知道。因此,可以使用类似于
optionsText
绑定的函数来延迟对属性的访问第一个