我在尝试使用self.material(一个可观察的)从函数中加载值时遇到问题。当尝试使用值加载select中的observable时,它显示为undefined。 data.materialNumber有一个字符串值,self.materials正确加载。任何帮助将不胜感激!
我会尝试只包含所需的代码......
我的HTML:
<select class="materialSelect" data-placeholder="Choose Material..."
data-bind="options: materials,
value: material,
optionsText: function (item) { return item.description },
optionsValue: function (item) { return item.materialNumber },
chosen: materials,
chosenOptions: { width: '250px', search_contains: true }"></select>
我的js:
function Mrs() {
var self = this;
self.materials = ko.observableArray();
self.material = ko.observable("");
bom.hubs.mrs.server()
.getMaterialsForAuthorizedPlants(lastSection)
.done(function (data) {
data.materials.unshift({});
self.material(data.materialNumber);
self.materials(data.materials);
});
};
(function (bom) {
"use strict";
bom.hubs.done(function() {
ko.applyBindings(new Mrs());
});
})(bom);
答案 0 :(得分:0)
TL; DR在self.material
之前分配self.materials选项绑定将尝试将所选选项与值同步,但是当您指定self.material时没有选项,因此它会将材质值重置为undefined。
当你设置self.materials时,选项会重建,但self.material现在是未定义的。
如果交换分配,则在设置了材料可观察量时,选择选项将可用。