@ Html.Partial之后的Ko绑定不起作用

时间:2018-08-01 20:40:42

标签: javascript html razor knockout.js

我有以下代码cshtml

<div class="container-fluid" id="dvUserData">
    <div class="tab-pane fade" id="documentos" role="tabpanel" aria-labelledby="documentos-tab">
                    @Html.Partial("Documentos")
                    <div class="col-md-3">
                        <button type="submit" class="btn btn-primary botao-vert" data-bind="click: editData">SALVAR</button>
                    </div>
                </div>

和以下绑定

  

ko.applyBindings(model,document.getElementById(“ dvUserData”));

但是我的data-bind =“ click:editData”不起作用,没有执行该点击。但是,如果我将div class =“ col-md-3” 放在 @ Html.Partial(“ Documentos”)之前,则绑定起作用。

我不知道为什么,我在这里寻找帖子,但找不到类似的内容。 预先感谢您的帮助。

---编辑

部分

<div class="row" id="dvDocument">
    <form role="form">
        <div class="row">
            <div class="col-12">
                <table class="table tabela-documentos">
                    <tbody data-bind="foreach: documentsReturn().documentTypes">
                        <tr class="bg-cinza">
                            <td>
                                <div class="aviso-sucesso" data-bind="visible : hasAllDocuments()"></div>
                                <div class="aviso-critica" data-bind="visible : !hasAllDocuments()"></div>  <span data-bind="text: Description"></span>
                            </td>
                            <td>
                                <span class="d-none" data-bind="value: IdTypeDocument"></span>
                                <a class="btn btn-secondary" data-bind="click: function () { $parent.saveTypeDocument(IdTypeDocument); $('.alerta-form2').hide();}" data-toggle="modal" data-target="#modalDocumento">
                                    ADICIONAR
                                </a>
                            </td>
                        </tr>
                        <!-- ko foreach: DocumentsArray() -->
                        <tr>
                            <td><i class="fa fa-file-text-o" aria-hidden="true"></i> Inclusão: <span data-bind="text: NewDate"></span></td>
                            <td>
                                <i class="fa fa-times pointer" data-toggle="modal" data-target="#modal-confirmation" aria-hidden="true" data-bind="visible : !frombase(),
                                                       , click: function(){ @*if (confirm('Deseja realmente deletar o documento?')) {*@ $parent.savePath(Path); @*}*@ }"></i>
                            </td>
                        </tr>
                        <!-- /ko-->
                    </tbody>
                </table>

            </div>
        </div>
        <div class="alert-button">

        </div>
    </form>
</div>

我忘了提到我还有另一个JavaScript文件,该文件将div文档与其他模型绑定在一起。

2 个答案:

答案 0 :(得分:0)

按F12并检查是否有任何敲除js init(ko.applyBindings)错误。 如果有,请修复并尝试。

如果不存在错误,请通过调试代码确保为model.Name()属性设置了一个值。

并检查局部视图,以查看是否将范围/绑定上下文缩小到模型的另一个复杂属性(也具有Name属性)。

最好提供有关部分视图绑定声明以及如何将初始值设置/加载到模型的更多信息。

答案 1 :(得分:0)

在寻找解决方案并与一些朋友交谈之后,我发现了问题所在。我正在绑定具有div id “ documentos” 和其他信息的主要div,这就是问题所在。 我删除了dvUserData的绑定,并将绑定放入我拥有的所有div中,包括仅为按钮创建一个新的div。

这就是我的div “ documentos” 现在的样子。

<div class="tab-pane fade" id="documentos" role="tabpanel" aria-labelledby="documentos-tab">

                        @Html.Partial("Documentos")
                        <div class="alert-button mb-3">
                            <div id="dvDocumentValidate">
                                <button type="submit" class="btn btn-primary botao-vert" data-bind="click: editData">SALVAR</button>
                            </div>
                        </div>
                    </div>

还有我的绑定

ko.applyBindings(model, document.getElementById("dvLoading"));
ko.applyBindings(model, document.getElementById("personaldata"));
ko.applyBindings(model, document.getElementById("address"));
ko.applyBindings(model, document.getElementById("databank"));
ko.applyBindings(model, document.getElementById("dvDocumentValidate"));
ko.applyBindings(model, document.getElementById("corporatedata"));