淘汰模板:自己的绑定上下文,相同的父级
Knockout Template: Own BindingContext, same Parents
我正在编写一个bindingHandler,并希望创建一个与当前绑定上下文具有相同父/父上下文的绑定上下文。阅读:没有额外的绑定上下文层次结构。
背景:我写了一个对话框绑定处理程序
dom-node 有一个对话框绑定,如下所示data-bind="dialog: { childTemplate: 'childTemplateId' }"
单击后,将呈现通用对话框模板并将其附加到正文。您还可以指定一个子模板(= 是所需的具体视图),该子模板由绑定上下文变量$childTemplateName
的通用对话框模板选择。
子模板应该不知道,在它和包含对话框绑定处理程序的级别之间有一个额外的层(= 通用对话框模板)。所以$parent
,$parent.$parent
,$parent.$parent.$parent
,...在子模板和具有data-bind="dialog: ..."
的 dom 节点中是相同的。
想要一个额外的绑定上下文,以便我可以使用特定于此"对话框调用"的属性来扩展它,这样当前的绑定上下文就不会受到污染。
好吧,似乎bindingContext.$parentContext.createChildContext(childViewModel);
工作得很厉害!
因此,使用$parentContext
是(逻辑上)要走的路。
(如果我没记错的话,我以前尝试过这个,但没有成功使用以前的淘汰赛版本......但没关系)
bindingContext.extend
返回一个新的 bindingContext:
ko.bindingHandlers.dialog = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var innerBindingContext = bindingContext.extend({
dialogProperty1: ...
});
ko.applyBindingsToDescendants(innerBindingContext, element);
return { controlsDescendantBindings: true };
}
};
因此,这应该完成您尝试实现的目标:具有相同层次结构和特定于对话框的扩展的新 bindingContext,不会污染对话框绑定之外的上下文。
- 按我自己的类克隆另一个元素的内容和顺序
- 如何配置分析以将数据发送到我自己的服务器
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- 创造自己的智能
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 从自己的安全系统中重新找回自己
- 麻烦将coffee脚本片段移动到rails中自己的类中
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 让我自己的过滤器不工作
- 消隐数组元素是否生成自己的属性
- JavaScript子对象访问自己的值
- Selenium异步脚本在自己的线程中阻塞其他脚本
- 为什么对象的函数值没有自己的作用域
- 我怎样才能给数组中的每个对象赋予它们自己的键
- 制作我自己的加密/解密系统
- 我如何才能使数组中的按钮只对其作出响应'使用javascript的自己的包装器
- 淘汰模板:自己的绑定上下文,相同的父级
- 在自己的网站上禁用chrome上下文菜单选项
- 如何在光标坐标处打开自己的上下文菜单
- 如何隐藏Firefox上下文菜单以显示我自己的菜单