knockout.js Knockout绑定问题,只能使用匿名函数获取值

z9gpfhce  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(84)

我有一个可观察的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)。但是我似乎找不到我在这里做错了什么。

w6mmgewl

w6mmgewl1#

如果在optionsValue绑定中使用带引号的"Meeting.meeting_type_id",它将查找该确切属性:committeeObject["Meeting.meeting_type_id"],而不是嵌套值,因为knockout不知道。
因此,可以使用类似于optionsText绑定的函数来延迟对属性的访问
第一个

相关问题