複数の変数を直接バインドすることはできませんが、カスタムバインド関数を作成することでうまくいきます。
例: http: //jsfiddle.net/gurkavcu/ePW8Y/
**入力値(true、false)を変更して、更新機能をトリガーします
HTML
<input data-bind="customData: test , v1 : test2"/>
<div>
<span data-bind ="text : test"/>
</div>
<div>
<span data-bind ="text : test2"/>
</div>
JS
ko.bindingHandlers.customData = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
$(element).change(function () {
valueAccessor()(element.value);
});
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var value =ko.utils.unwrapObservable(valueAccessor());
var v1 = allBindingsAccessor().v1;
if(value === "true") {
v1("1");
console.log(v1());
}
else if(value === "false") {
v1("2");
console.log(v1());
}
}
};
function ViewModel() {
this.test = ko.observable(false);
this.test2 = ko.observable("2");
};
$(function() {
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
})
必要に応じて更新機能を変更してください。v1:...、v2:...、v3:...を使用して、バインディングに任意の数の変数を追加し、allBindingsAccessor()。v1、allBindingsAccessor()。v2、allBindingsAccessor()。v3を介してアクセスできます。