[英]Knockout JS - data-bind multiple values
關於JS Knockout庫的問題 - 我有三個輸入,所有數據都綁定到同一個變量。 兩個的布爾值為false,一個布爾值為true。 (不幸的是,我無法將它們改為整體,這會使這個問題變得更容易)。 雖然這兩個虛假輸入共享行為,但我需要以某種方式區分它們以觸發稍微不同的行為。
是否可以將每個數據綁定到另一個具有不同值的變量? 而不是每個人
<input data-Bind="checked:test" value="false">
我會有類似的東西
<input data-Bind="test, test2" value="false, 1">
和
<input data-Bind="test, test2" value="false, 2">?
我直接嘗試了,但沒有用,所以我不知道是否可能。 非常感謝。
您無法直接綁定多個變量,但創建自定義綁定函數可以幫到您。
示例: 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訪問它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.