我有一个隐藏的输入并将值绑定到我的模型的可观察属性。我正在使用另一个内部更新隐藏输入值的插件,但是observable不会更新它的值。
如何强制observable从元素中更新它的值?
像valueHasMutated,但在另一方面。
由于
答案 0 :(得分:23)
我意识到你已经提出了解决方案。
但是我想我会发布自己的任何人,因为它在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");
我不确定这是否是最好的解决方案,但是我能在时间表中找到最好的解决方案:-)如果我想出一些更优雅的东西,我可能会在淘汰wiki中加入一些东西。
答案 1 :(得分:12)
通过为我的案例添加$("hiddenInputId").trigger("change");
而不添加ko绑定处理程序。
谢谢!