在(webforms)页面中,我有一个打开动态加载的jqueryui对话的按钮。
问题是,我希望这个对话能够掌握自己的淘汰赛视图模型,但是视图模型已经在主页中设置了。
我认为在调用ko.applyBindings之后不可能向视图模型添加新的属性。
相反,我应该研究另一个设计。但是哪一个呢?
vm.dialogueKeyvalueCollection即可。vm.dialogue.userName() vm.dialogue.searchResult(),然后让html控制被调用。目前的解决方案是再次调用ApplyBindings,类似于添加的ko.applyBindings(vm, $('#dialog-form')[0]);。我相信(而且在某种程度上仍然如此),要调用不同DOM元素的applyBindings,就不能嵌套在另一个DOM元素中。与动态HTML的绑定被注释为这里和jsfiddled 这里。发布于 2015-02-21 09:43:15
我用嵌套的视图模型做了很多组合,通常是为了创建对话模型。关于一个完整的答案,请参见这里。
不过,仅仅使用with绑定可能会更简单一些。您可以在视图模型上创建一个dialogueViewmodel可观察属性。
当您准备显示对话时,只需用一个或多个可观察到的键填充它,例如
this.dialogueViewmodel({
markup: ko.observable("<h1>Kittens!</h1>")
});并将其包装在with绑定中:
<!-- ko with: dialogueViewmodel -->
<div id="dialog" title="Basic dialog" data-bind="html: markup">
</div>
<!-- /ko -->只要dialogueViewmodel是null,任何东西都不会被绑定和呈现。只有当您添加对话数据时才会发生这种情况--不需要再修改applyBindings。
不过,您可能需要编写自己的绑定来与jQueryUI.dialogue进行接口。
第三种选择:我已经编写了一个模态库,它附带了一个从盒子里绑定的淘汰机。这是一个JSfiddle演示。如果您没有设置jQueryUI,那可能是另一种选择;虽然文档并不完美,但我很乐意帮助您尽可能地修复这些文档。
发布于 2015-02-21 04:31:21
你能用ko.applyBindingsToNode函数来绑定附加的html吗?
ko.applyBindingsToNode(appendedelement,{ binding options})
希望这能帮到你。
https://stackoverflow.com/questions/28639480
复制相似问题