Ajax 使用绑定到可观察数组的选项取消预定义默认值
我正在从服务器获取一个select选项列表,并填充一个observableArray。然后我想将所选项目设置为预定义值。我有一个非常简单的JSFIDLE,它模拟通过单击按钮从服务器提取数据 下面是Javascript的基本尝试:Ajax 使用绑定到可观察数组的选项取消预定义默认值,ajax,knockout.js,html-select,Ajax,Knockout.js,Html Select,我正在从服务器获取一个select选项列表,并填充一个observableArray。然后我想将所选项目设置为预定义值。我有一个非常简单的JSFIDLE,它模拟通过单击按钮从服务器提取数据 下面是Javascript的基本尝试: (function() { var vm = (function() { var self = this; self.array = ko.observableArray([]);
(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');”:
我不太喜欢把这当作一种解决办法。似乎应该有一个合理的方法来处理这个问题,但仅仅在订阅触发器上设置值似乎不起作用。您需要选项AfterRender。这是一把小提琴: HTML-
<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">
文档--并向下滚动到备注2您需要选项AfterRender。这是一把小提琴: HTML-
<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">
文档--并向下滚动到备注2您需要选项AfterRender。这是一把小提琴: HTML-
<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">
文档--并向下滚动到备注2您需要选项AfterRender。这是一把小提琴: HTML-
<select data-bind="options: array, value: selectedValue, optionsAfterRender: setVal">
文档--并向下滚动到注释2一旦填充事件结束并获得json并将其放入数组中,为什么不立即设置值呢?一旦您在self.array中设置了数据,它就会更新
(function() {
var vm = (function() {
var self = this;
self.array = ko.observableArray([]);
self.selectedValue = ko.observable();
self.populate = function() {
// magical assmagic goes and get's json, and converts it to ['a','b','c']
self.array(['a','b','c']); // dropdown is now populated
self.selectedValue('c'); // therefore we can set it to a valid value
};
}());
ko.applyBindings(vm);
}());
见下文:
一旦完成填充事件并获取json并将其放入数组中,为什么不立即设置值?一旦您在self.array中设置了数据,它就会更新
(function() {
var vm = (function() {
var self = this;
self.array = ko.observableArray([]);
self.selectedValue = ko.observable();
self.populate = function() {
// magical assmagic goes and get's json, and converts it to ['a','b','c']
self.array(['a','b','c']); // dropdown is now populated
self.selectedValue('c'); // therefore we can set it to a valid value
};
}());
ko.applyBindings(vm);
}());
见下文:
一旦完成填充事件并获取json并将其放入数组中,为什么不立即设置值?一旦您在self.array中设置了数据,它就会更新
(function() {
var vm = (function() {
var self = this;
self.array = ko.observableArray([]);
self.selectedValue = ko.observable();
self.populate = function() {
// magical assmagic goes and get's json, and converts it to ['a','b','c']
self.array(['a','b','c']); // dropdown is now populated
self.selectedValue('c'); // therefore we can set it to a valid value
};
}());
ko.applyBindings(vm);
}());
见下文:
一旦完成填充事件并获取json并将其放入数组中,为什么不立即设置值?一旦您在self.array中设置了数据,它就会更新
(function() {
var vm = (function() {
var self = this;
self.array = ko.observableArray([]);
self.selectedValue = ko.observable();
self.populate = function() {
// magical assmagic goes and get's json, and converts it to ['a','b','c']
self.array(['a','b','c']); // dropdown is now populated
self.selectedValue('c'); // therefore we can set it to a valid value
};
}());
ko.applyBindings(vm);
}());
见下文: