Javascript 使用ko.computed绑定下拉选项时出现问题
我有一个模板,它有一个下拉列表(使用自定义库),如下所示:Javascript 使用ko.computed绑定下拉选项时出现问题,javascript,knockout.js,Javascript,Knockout.js,我有一个模板,它有一个下拉列表(使用自定义库),如下所示: <select id="selectmyField" data-bind="libraryComponent: { component: 'libSelect', options: myViewModel.myFieldOpts, value: myViewModel.myFieldSelected }"> </select> 我已经调试过了,可以看到带有值/标签属性的myFieldA
<select id="selectmyField" data-bind="libraryComponent:
{ component: 'libSelect',
options: myViewModel.myFieldOpts,
value: myViewModel.myFieldSelected }">
</select>
我已经调试过了,可以看到带有值/标签属性的myFieldArray。
但下拉选项不会显示在UI上
我在做ko.computed时是否丢失了一些上下文?如果您阅读了他们的
计算的可观测值是依赖于一个或多个其他可观测值的函数,当这些依赖项中的任何一个发生变化时,这些函数将自动更新
您最好使用observearray
而不是computed
observeable。我想你的代码应该是这样的
var ViewModel = function() {
var self = this;
self.selectedOpt = ko.observable("");
self.options = ko.observableArray([]);
self.initOptions = function () {
// you code to grab data from server
var myFieldData = data.apiResponseData,
myFieldArray = [],
someOtherField = self.someOtherFieldSelected();
self.options.push({ value: "any", label: "Any" });
};
};
var vm = new ViewModel();
$(document).ready(function() {
vm.initOptions();
ko.applyBindings(vm);
});
HTML
<select id="selectmyField" data-bind="options: options, value: selectedOpt">
</select>
什么是库组件
绑定?看起来这可能是某个地方的一个问题?它主要是一个与UI相关的组件…但我确信这没有问题…好的。你的computed
从表面上看很好,与上下文没有任何问题……在你看来?不是从你展示的内容来看-我以类似的方式使用了很多computed
s,返回普通数组和observearray
s-通常绑定fine我想基于两件事进行更新;A.API成功酒店。其他领域的变化(其他可观察)不确定使用observableArray是否有效?如果是的话,你能详细说明考虑到以上两个因素,我如何才能使observableArray工作吗thing@testndtv您必须订阅另一个可观察的,并编写一个函数来更新您的可观察数组。你最好还是坚持使用计算的,因为你无论如何都需要这个函数,而且它内置了一个隐式订阅可观察的。是的……这就是我的想法……但不确定为什么计算返回的结果(数组)没有绑定/显示到UI?
<select id="selectmyField" data-bind="options: options, value: selectedOpt">
</select>