首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将修改后的valueAccessor转发给ko.bindingHandlers.with

将修改后的valueAccessor转发给ko.bindingHandlers.with
EN

Stack Overflow用户
提问于 2013-03-19 02:57:19
回答 1查看 1.9K关注 0票数 1
代码语言:javascript
复制
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()"时相同的结果?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-19 03:22:08

with绑定包括一个init函数,其中捕获要用作匿名模板的子元素。

我不确定您是否真的在使用传递给绑定(valueAccessor)的值。是否希望它在该值更改时进行更新?

否则,更简单的模式可能是:

代码语言:javascript
复制
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);
   }
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15484674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档