Javascript 以编程方式为modal';内容
我有一个主视图模型和一个很棒的视图,还有一个模式窗口(fancybox),其中包含一些非常复杂的流程(您将在该模型中经历3个步骤) 现在,我已经为此创建了一个新的ViewModel,而不是用它的关注点污染主ViewModel。因此,让我们分别调用它们Javascript 以编程方式为modal';内容,javascript,mvvm,fancybox,knockout.js,Javascript,Mvvm,Fancybox,Knockout.js,我有一个主视图模型和一个很棒的视图,还有一个模式窗口(fancybox),其中包含一些非常复杂的流程(您将在该模型中经历3个步骤) 现在,我已经为此创建了一个新的ViewModel,而不是用它的关注点污染主ViewModel。因此,让我们分别调用它们MainViewModel,ModalViewModel 我最初打算通过一些模板将模式视图注入主视图,然后让fancybox将它们作为内容。然而,这样我将拥有重复的dom元素,这可能是危险的,因为可能会有重复的元素ID等 所以我想也许我应该试着找到一
MainViewModel
,ModalViewModel
我最初打算通过一些模板将模式视图注入主视图,然后让fancybox将它们作为内容。然而,这样我将拥有重复的dom元素,这可能是危险的,因为可能会有重复的元素ID等
所以我想也许我应该试着找到一种使用ajax将模板注入fancybox窗口的方法
总结一下流程:
那么我这样做对吗?或者我应该将ModalViewModel作为子视图模型包含在主视图模型中并以这种方式处理它吗?您应该将该模型作为主视图模型的子视图包含 KO的范例是拥有一个视图模型/页面
如果在fancybox中使用iframe,两个视图模型将更有意义(但这在跨两个视图模型同步数据方面增加了自身的复杂性)。您应该将模型作为主视图模型的子视图包含在内 KO的范例是拥有一个视图模型/页面
如果您在fancybox中使用iframe,两个视图模型将更有意义(但这在跨两个视图模型同步数据方面增加了自身的复杂性)。既然您可以控制模板ID的命名,为什么不将模板ID重命名为唯一的呢 至于绑定到ModalViewModel,您可以使用如下视图模型:
var MainViewModel = {
//other props
Modal : new ModalViewModel()
};
然后将绑定应用于childViewModel
像这样:
ko.applyBindings(MainViewModel.Modal);
如果整个模态视图不仅仅是一个模板,请使用以下重载:
ko.applyBindings(MainViewModel.Modal,modalRootElement);
既然您可以控制模板ID的命名,为什么不将模板ID重命名为唯一的呢 至于绑定到ModalViewModel,您可以使用如下视图模型:
var MainViewModel = {
//other props
Modal : new ModalViewModel()
};
然后将绑定应用于childViewModel
像这样:
ko.applyBindings(MainViewModel.Modal);
如果整个模态视图不仅仅是一个模板,请使用以下重载:
ko.applyBindings(MainViewModel.Modal,modalRootElement);