Ответ 1
Я понимаю, что вы уже нашли решение.
Но я подумал, что я бы опубликовал свою собственную информацию о том, что кто-то сталкивается с этим, так как он высоко в результатах Google без ответов, поэтому может оказаться полезным для кого-то.
ko.bindingHandlers.hiddenInputValue = {
init: function (element, valueAccessor) {
$(element).bind("change", function (event, data, formatted) { //hidden vars don't usually have change events, so we trigger $myElement.trigger("change");
var value = valueAccessor();
value($(this).val()); //rather than $(this).val(), might be best to pass our custom info in data
});
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var value = valueAccessor();
$(element).val(value);
}
};
И html
<input type="hidden" name="myName" id="myId" data-bind="hiddenInputValue: myModelValue" >
Поскольку скрытые входы обычно не имеют событий изменения, вам нужно будет инициировать собственное событие, когда вы измените значение, например.
$("#myId").trigger("change");
Я не уверен, что это лучшее решение, но лучшее, что я мог бы найти в шкале времени, в которой я работаю:-) Я мог бы поместить что-то в вики-нокаут, если придумаю что-то более элегантное.