Подтвердить что ты не робот

Как заставить наблюдаемое читать значение из элемента DOM

У меня есть скрытый ввод и привязываю значение к наблюдаемому свойству моей модели. Я использую другой плагин, который внутренне обновляет значение этого скрытого ввода, однако наблюдаемый не обновляет его.

Как я могу заставить наблюдаемое обновить его значение от элемента?

что-то вроде valueHasMutated, но по-другому.

Спасибо

4b9b3361

Ответ 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");

Я не уверен, что это лучшее решение, но лучшее, что я мог бы найти в шкале времени, в которой я работаю:-) Я мог бы поместить что-то в вики-нокаут, если придумаю что-то более элегантное.

Ответ 2

Это сработало, добавив $("hiddenInputId").trigger("change"); для моего случая без добавления обработчиков привязки ko.

Спасибо!