您好我有一个应用程序,数据从一个页面传递到另一个页面,并为其分配了预定义的数据对象/数组,我的问题是我可以看到observableArray
有一个值,然后它转为{{1可观察到未定义。
我已经消除了数据绑定标记,因为我删除了我的可观察数组没有设置任何未定义的内容。
以下是我将observables / observableArray绑定到元素的方法。
SelectedPeople
<select data-bind="options: ObservableArray.People, value: ObservableArray.SelectedPeople, optionsText: 'Name'"></select>
=可观察的对象数组 - 工作正常并呈现所有下拉选项
ObservableArray.People
=可观察
两者都有&#39;姓名&#39;对象定义为匹配ObservableArray.SelectedPeople
。从头开始选择数据时它非常有效,但是当我尝试在其中预定义数据时,optionsText
对象在尝试加载时会一直以Observable.SelectedPeople
的形式发送。
基本上我的undefined
上有一个对象,它应该预定义该选择的值,并且对象100%匹配下拉列表Observable.SelectedPeople
选项之一。我需要它不要将ObservableArray.People
设置为undefined并填充选择框。
任何人都可以看到为什么会这样。
由于
答案 0 :(得分:1)
...并且对象100%匹配其中一个下拉列表
ObservableArray.People
选项。
这一行让我怀疑你是否正在使用对象的实际引用,或只是类似的对象。
例如,这将不工作:
var options = [{ id: 1 }, { id: 2 }, { id: 3}];
var selectedOption = ko.observable({ id: 1 });
Knockout没有执行某种deepEquals
比较;如果它看到非原始的,它会进行参考检查。 options[0] !== { id: 1 }
,因此初始选择不有效。
下面的代码会有效,因为您使用的是select元素中使用的数组中的实际对象:
var options = [{ id: 1 }, { id: 2 }, { id: 3}];
var selectedOption = ko.observable(options[0]);