淘汰3.2 ApplyBinding到新dom节点

淘汰3.2 ApplyBinding到新dom节点,dom,knockout.js,Dom,Knockout.js,我已经搜索过了,找到了这个问题的老答案,并尝试手动清除bidnigns,然后调用applybindings。。。以及创建一个与其他任何东西都不直接相关的自定义viewmodel,并在新dom节点出现后应用与该模型的绑定 我的具体场景是,bootstrap3模式在调用show后基本上会重新连接自身,同样,模式中的所有项实际上都没有绑定 我已经有了一个表示对话框状态/属性的模型,但是我希望dialogviewmodel是我的pageViewModel的子对象 我的问题是,此时此刻,什么是最合适的方法

我已经搜索过了,找到了这个问题的老答案,并尝试手动清除bidnigns,然后调用applybindings。。。以及创建一个与其他任何东西都不直接相关的自定义viewmodel,并在新dom节点出现后应用与该模型的绑定

我的具体场景是,bootstrap3模式在调用show后基本上会重新连接自身,同样,模式中的所有项实际上都没有绑定

我已经有了一个表示对话框状态/属性的模型,但是我希望dialogviewmodel是我的pageViewModel的子对象


我的问题是,此时此刻,什么是最合适的方法?是否没有办法说获取此节点,将其附加到此属性处的viewmodel?

我使用的工具与您使用的knockout和bootstrap3相同。以下是我如何完成情态动词的示例:

此div作为my index.html中正文的第一个元素存在:

<div class="modal fade" id="BaseModal" tabindex="-1" role="dialog" aria-labelledby="BaseModal" aria-hidden="true" data-backdrop="static" data-keyboard="false">
    <div id="modalLoading" class="ajax-loader">
        <img src="images/working_blue.gif" />
    </div>
    <div class="modal-dialog modal-lg">
        <div id="ModalAnchor" class="modal-content col-lg-4 col-lg-offset-4" data-bind="html: $data.ModalContent"></div>
    </div>
</div>

// This is typescript but the javascript should be pretty close to this.
private LoadModalView(viewName: string, viewModel: any): void {
    $.get(viewName)
        .then((view: any, status: string, jxhr: JQueryXHR) => {
            this.ModalContent(''); // ensure there is no content in the modal.
            this.ModalContent(view); // Load new HTML
            ko.applyBindingsToDescendants(viewModel, this.ModalAnchor[0]); // bind new modal viewmodel
            this.BaseModal.modal('show'); // Open the modal
        }, (view: any, status: string, jxhr: JQueryXHR) => { /*Do error handling*/ });
}
编辑:下面是我加载到模式中的HTML示例:

<div class="modal-header">
    <h3 data-bind="text: $data.Header"></h3>
</div>
<div class="modal-body">
    <h5 data-bind="text: $data.Message"></h5>
</div>
<div class="modal-footer">
    <button id="OK" class="btn btn-primary center-block" data-bind="click: OK, text: ButtonText" />
</div>
在LoadModalView函数中,ViewModel参数是一个ViewModel,用于表示新模式的新数据/内容/etc

在模态视图模型中,我在模态上调用“hide”,以实现其目的


我希望这有帮助!我不知道这是“正确”还是“正确”的方法,但这是我的模式。

我实际上是以更全面的方式解决了这个问题。。。但这也行。。。应该被认为是答案。鉴于这是一种非常常见的情况,我认为knockout应该记录这种方法,或者他们推荐的任何方法。