Jquery mobile 是否可以在不绑定到容器的情况下绑定虚拟元素?

Jquery mobile 是否可以在不绑定到容器的情况下绑定虚拟元素?,jquery-mobile,knockout.js,Jquery Mobile,Knockout.js,在jQuery Mobile的当前版本中,似乎有必要将所有数据role=“page”元素保持在一个级别上(至少当需要在它们之间建立链接时)。因为我使用knockout动态生成页面,所以我需要直接绑定虚拟元素,例如 <div data-role="page" id="page1"><h1 data-bind="text: name"></h1></div> <!-- ko text: name --><!-- /ko -->

在jQuery Mobile的当前版本中,似乎有必要将所有数据role=“page”元素保持在一个级别上(至少当需要在它们之间建立链接时)。因为我使用knockout动态生成页面,所以我需要直接绑定虚拟元素,例如

<div data-role="page" id="page1"><h1 data-bind="text: name"></h1></div>
<!-- ko text: name --><!-- /ko -->

我想将一个模型A绑定到page1,将一个模型B绑定到虚拟元素(这是一个模板:实际应用程序中的foreach绑定)。更详细的小提琴:


这是否可行?

由于信息有限,我认为您有3种选择:

(1) 将虚拟元素包装到另一个虚拟元素或div中,并使用with绑定

<!-- ko with: modelForPage2 -->
    <!-- ko text: name --><!-- /ko -->
<!-- /ko -->

我不知道KO的情况,但是你可以在每个页面的
pagecreate
上分别添加监听器。如果要在显示页面时执行某些操作(
pageContainer
事件),除非将每个页面放置在不同的
pageContainer
中,否则不可能执行此操作。通过这种方式,每个页面都将作为一个单独的页面,并具有自己的绑定。您可以使用binding@Omar()检查淘汰
。文档中说()页面容器当前是一个单例,因此我没有为每个html页面使用多个容器而烦恼。在1.4.2中是否可以使用多个pagecontainer?您可以使用,检查@Omar…这个注释,我应该学习jQM;)淘汰赛很好,但它不能很好地与jQM配合。因为它是我使用过的唯一的JavaScript MVC(MVVM)框架,所以我不能对Angular JS(我不喜欢它的功能与jQuery重叠)或Ember或主干(仅举几例)这样的竞争说太多。谢谢。我的问题不够精确。我确信所有这些解决方案都需要首先绑定虚拟元素。“with”只会更改当前绑定中的上下文。类似这样的内容:将不起作用,因为虚拟元素没有绑定,也不会查看“ModelBinInstance”。我想要的是绑定虚拟元素,而不依赖于父DOM元素(注释除外)。无论如何,我都接受这个答案,因为我现在确信我原来的计划不起作用,而这些示例让我走上了另一条更可行的道路;我将viewmodel分为几个子功能(VM.modelA、VM.modelB),将VM应用于整个页面,并使用“with”绑定到范围,示例:有趣的是,我回复了您的第一条评论,建议您可以这样做,但我忘了点击Send。很高兴听到你找到了解决办法。
<!-- ko template: { name: 'page2_template', data: modelForPage2 } --><!-- /ko -->
ko.bindingHandlers.bindModel = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {
        var newContext = new ModelA();
        ko.applyBindingsToDescendants(newContext, element);
        return { controlsDescendantBindings: true };
    }
};
ko.virtualElements.allowedBindings.bindModel = true;