我正在从服务器获取选择列表并填充observableArray。然后我想将选定的项目设置为预定义的值。我有一个非常简单的jsFiddle,它可以模拟通过单击按钮从服务器拉取数据。Knockout预定义的默认选项绑定到可观察数组
http://jsfiddle.net/JonathanN/hev1rqeu/
这里的Java脚本的基本尝试:
(function() {
var vm = (function() {
var self = this;
self.array = ko.observableArray([]);
self.selectedValue = ko.observable();
self.useSetTimeout = ko.observable(false);
self.array.subscribe(function(newValue) {
self.selectedValue('b');
});
self.populate = function() {
self.array(['a','b','c']);
};
}());
ko.applyBindings(vm);
}());
这是我的解决办法,它取代 “self.selectedValue( 'B');”:
var waitForSelectToPopulate = function() {
self.selectedValue('b');
if(self.selectedValue() != 'b') {
setTimeout(waitForSelectToPopulate, 10);
}
};
waitForSelectToPopulate();
作为解决方法,我不太喜欢这个。似乎应该有一个合理的方法来处理这个问题,但只是设置订阅触发器的值似乎不起作用。