当用户从组合框<select>
中选择其他值时,我想触发一个函数
的HTML
<div class="wrapper wrapper-content" id="appGradeHorariaCompleta">
<select class="form-control m-b" data-bind="options: Curriculos,optionsText:'Text',optionsValue:'Value',optionsCaption:'Selecione', value: CurriculoSelected, event:{ change: $parent.CurriculosChanged}"></select>
</div>
JS
function PainelViewModel() {
var self = this;
self.Curriculos = ko.observableArray([]);
self.CurriculosChanged = (function (curriculo) {
console.debug(curriculo);
});
}
function CurriculoViewModel() {
var self = this;
self.Id = ko.observable(0);
self.Value = ko.observable('');
self.Selected = ko.observable(0);
}
...GET DATA...
...
..
.
$(data.CurriculoComboBox).each(function (index, item) {
var model = new CurriculoViewModel();
model.myvalues = item.myValues;
painelVM.Curriculos().push(model);
});
ko.applyBindings(painelVM, document.getElementById("appGradeHorariaCompleta"));
我想要的是当组合框中的值更改时,我想获取此参数以绑定另一个函数。
但是在完成过程中,我遇到了一个错误:
Unable to process binding "event: function (){return { change:$parent.HabilitacoesCursosChanged} }
最佳答案
首先,您的视图模型确实很混乱。您可能需要使用数据绑定中使用的变量名进行更改,以使其与viewmodel中的变量名匹配。我希望我对你正确。您想要的是在组合框的值更改时触发一个方法。为此,有一种更简单的方法可以在可观察(您的组合框值)上使用订阅。因此,只要组合框的值发生变化,就会触发订阅功能。所需的功能作为功能主体传递到订阅函数内部。
HTML:
<div class="wrapper wrapper-content" id="appGradeHorariaCompleta">
<select class="form-control m-b" data-bind="options:Curriculos, optionsText:'Text',optionsValue:'Value',optionsCaption:'Selectone', value: CurriculoSelected"></select>
</div>
Javascript:
function CurriculoViewModel() {
var self = this;
self.Curriculos = ko.observableArray([]);
self.CurriculoSelected = ko.observable('');
self.CurriculoSelected.subscribe(function(value) {
// Your change functionality goes here combobox.
});
}
参考资料检查订阅:
Knockout observables subscribe
Knockout options binding
关于javascript - 使用Knockout.js更改值时触发函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40726196/