我是淘汰赛的新手,目前正在尝试创建一个自定义绑定处理程序,将对象映射到从数据库生成的html。它正确设置变量,但是当值改变时,它不会更新对象。
ko.bindingHandlers.CustomBinding = {
init: function (element, valueAccessor, allBindings, bindingContext) {
ko.utils.registerEventHandler(element, "change", function () {
var observable = valueAccessor();
var valueUnwrapped = ko.unwrap(observable);
observable($(element).val());
});
//Adds answers
var accessor = ko.utils.unwrapObservable(valueAccessor());
UpdateSurveyQuestion(element, accessor, false);
$('.select2').trigger('change.select2');
},
update: function (element, valueAccessor, allBindings, bindingContext) {
var value = valueAccessor();
var valueUnwrapped = ko.unwrap(value);
UpdateSurveyQuestion(element, valueUnwrapped, true);
$('.select2').trigger('change.select2');
}
};
HTML
<!-- ko if: QuestionType == 1 -->
<div class="margin-bottom60">
<input type="text" class="form-control input-sm" data-bind="CustomBinding: Field">
</div>
<!-- /ko -->
<!-- ko if: QuestionType == 3 -->
<div class="margin-bottom60">
<select class="selectBasic form-control input-sm select2" data-placeholder="Please select an option..."
data-bind="select2:{options:{data: DropdownName, minimumResultsForSearch: 'Infinity'}}, CustomBinding: Field"></select>
</div>
<!-- /ko -->
<!-- ko if: QuestionType == 4 -->
<div class="margin-bottom60">
<select class="selectBasic form-control input-sm select2" data-placeholder="Choose all that apply..."
data-bind="select2:{options:{data: DropdownName, minimumResultsForSearch: 'Infinity'}}, CustomBinding: Field" multiple></select>
</div>
<!-- /ko -->
<!-- ko if: QuestionType == 5 -->
<div class="margin-bottom60">
<textarea type="text" class="form-control input-sm" data-bind="CustomBinding: Field" rows="5"></textarea>
</div>
<!-- /ko -->
对此有任何帮助都很棒