@Html.Partial 之后的 Ko 绑定不起作用
Ko Bindings after @Html.Partial do not work
我有以下代码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 文档和不同的模型。
按 F12 并检查是否有任何 knockout js init (ko.applyBindings) 错误。
有的话修复一下试试
如果不存在错误,请确保通过调试代码为 model.Name() 属性 设置了一个值。
并检查您的部分视图,看看您是否已将范围/绑定上下文缩小到您模型的另一个复杂 属性,该模型也具有名称 属性。
如果您能提供更多关于部分视图绑定声明以及如何设置/加载模型初始值的信息,那就更好了。
在寻找解决方案并与一些朋友交谈后,我发现了问题所在。我正在绑定具有 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"));
我有以下代码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 文档和不同的模型。
按 F12 并检查是否有任何 knockout js init (ko.applyBindings) 错误。 有的话修复一下试试
如果不存在错误,请确保通过调试代码为 model.Name() 属性 设置了一个值。
并检查您的部分视图,看看您是否已将范围/绑定上下文缩小到您模型的另一个复杂 属性,该模型也具有名称 属性。
如果您能提供更多关于部分视图绑定声明以及如何设置/加载模型初始值的信息,那就更好了。
在寻找解决方案并与一些朋友交谈后,我发现了问题所在。我正在绑定具有 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"));