ko.bindingHandlers.editMode =
{
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext)
{
var newValueAccessor = ko.utils.unwrapObservable(valueAccessor());
var $element = $(element);
var viewModel = new someViewModel();
$element.append("<input type='text' data-bind='value: model.value' />");
ko.bindingHandlers.with.update(element, function() { return viewModel }, allBindingsAccessor, viewModel, bindingContext);
}
}
someViewModel является вид модели, который содержит свойство model.value
(наблюдаемое), который я хочу связать с добавленным входом. Но при вызове обновления для привязки with
я получаю Uncaught TypeError: Cannot read property 'savedNodes' of undefined.
(сборка отладки knockout.js). Как передать viewModel
в with.update
, чтобы получить тот же результат, что и при использовании data-bind="with: new someViewModel()"
? Спасибо!вперед модифицированный valueAccessor для ko.bindingHandlers.with
Да, мне нужно обновить при изменении значения, поэтому я использую обновление. О значении Аксессор ... на самом деле я использую его, но не в показанном примере :) Мой плохой – VladN
Изменяется ли содержимое элемента (где вы делаете '$ element.append') в зависимости от изменений в valueAccessor (что передается к привязке)? –
Нет. Я просто пытаюсь привязать модель представления к добавленному элементу. Модель просмотра отличается от той, которая привязана к родительскому. Я попытался вызвать applyBindings над добавленным элементом, но он говорит, что «модель не определена», даже если в модели представления существует свойство модели. – VladN