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属性(model.value)。但是当调用with绑定的更新时,我得到了Uncaught TypeError: Cannot read property 'savedNodes' of undefined. (knockout.js调试版本)。我应该如何将viewModel传递给with.update,以使其获得与使用data-bind="with: new someViewModel()"时相同的结果?谢谢!
发布于 2013-03-19 03:22:08
with绑定包括一个init函数,其中捕获要用作匿名模板的子元素。
我不确定您是否真的在使用传递给绑定(valueAccessor)的值。是否希望它在该值更改时进行更新?
否则,更简单的模式可能是:
ko.bindingHandlers.mySpecialWith = {
init: function(element, valueAccessor, all, data, context) {
var newData = new someViewModel(); //create some new data using what was passed in or however you want
//manipulate element's children, if necessary
ko.applyBindingsToNode(element, { 'with': newData }, context);
}
};https://stackoverflow.com/questions/15484674
复制相似问题