这是包含我的绑定的.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"}
我有一个自定义绑定的开头,就像这样。
ko.bindingHandlers.interactiveBar = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
debugger;
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
}
};
但是当我查看viewModel时,它等于valueAccessor并且只是我传入的数据对象。我想访问dateGraph viewModel,并且应该能够访问它因为我使用了" with:graphData"根据文件。
答案 0 :(得分:6)
foreach
内部viewModel
属性是在该范围级别绑定的数据。
有几种选择(假设您使用的是Knockout 2.0):
通过$parent
代替$data
并通过dateGraph
valueAccessor()
对象
或绑定处理程序的第5个参数实际上是绑定上下文。绑定上下文将具有$data
,$parent
,$parents
和$root
属性。您可以看到属性here的说明。