Knockout - 在`with`标签内自定义绑定 - 如何将“$ root”传递给自定义绑定?

时间:2014-01-08 16:57:50

标签: javascript knockout.js

我在with标记

中有自定义绑定
<div id="mapContainer" data-bind="with: contentTabs">
  ............
            <div id="map" data-bind="createMap: { }"></div>
  ............
</div>

自定义绑定定义如下

ko.bindingHandlers.createMap = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
       //Some code which accesses the viewModel
       ....
    }
}

自定义绑定的“viewModel”参数引用“contentTabs”变量(在上面的“with”绑定中定义)。

我想以干净的方式从自定义绑定中访问视图模型(root)。

有可能吗?

在我用“with”绑定包装自定义绑定之前,代码运行良好。 - 如何将“$ root”传递给自定义绑定?

1 个答案:

答案 0 :(得分:1)

只需将该值作为附加绑定传递 -

<div id="map" data-bind="createMap: { }, createMapOptions: { parentContext: $root.something }"></div>

然后在您的自定义绑定中获取其他绑定的值 -

ko.bindingHandlers.createMap = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        var options = allBindingsAccessor().createMapOptions;
        var thisContext = options.parentContext;
    }
}
相关问题