为什么我无法在此自定义绑定中获取当前viewModel?

Jer*_*ith 0 javascript knockout.js

这是包含我的绑定的.haml代码.我删除了不相关的绑定.

#date-extension
  .filter-extension-container
    .filter-extension-button
      .button-close
    #hand-graph-container{"data-bind" => "with:dateGraph"}
      #x-axis
      #hand-graph{"data-bind" => "foreach: {data:graphData}"}
        %div{"data-bind" => "interactiveBar: $data"}
Run Code Online (Sandbox Code Playgroud)

我有一个自定义绑定的开头,就像这样.

ko.bindingHandlers.interactiveBar = {
  init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
debugger;
  },
  update: function(element, valueAccessor, allBindingsAccessor, viewModel) {

  }
};
Run Code Online (Sandbox Code Playgroud)

但是当我查看viewModel时,它等于valueAccessor并且只是我传入的数据对象.我想访问dateGraph viewModel,并且应该能够访问它,因为我使用了"with: graphData"根据文档.

RP *_*yer 6

里面的foreachviewModel属性是在该范围级别被绑定的数据.

有几个选项(假设你使用的是Knockout 2.0):

  • 传递$parent代替$datadateGraph通过访问您的对象valueAccessor()

  • 或者绑定处理程序的第5个参数实际上是绑定上下文.结合上下文将有$data,$parent,$parents,和$root属性.您可以在此处查看属性的说明.