重用带有绑定敲除 JS 的局部视图
Reusing the Partial View with binded knockout JS
在着陆页中,我将绑定应用于局部视图。 ("myModalSeeAllDrafts")
着陆页:
@Html.Partial("~/Views/Home/JumpStartYourJourney/_SeeAllDrafts.cshtml")
var journeyDrafts = {
dataUrl: '@Url.Action("GetSeeAllDraftsData", "Home")',
selectUrl: '@Url.Action("GetDraftJourney", "Home")',
deleteUrl: '@Url.Action("DeleteDraftBooking", "Home")'
};
var journeyDraftsVM = new JourneyDraftsViewModel(journeyDrafts);
ko.applyBindings(journeyDraftsVM, $("#myModalSeeAllDrafts")[0]);
我想从另一个角度重用部分
旅行者观点:
@Html.Partial("~/Views/Home/JumpStartYourJourney/_SeeAllDrafts.cshtml")
var url = {
dataUrl: '@Url.Action("GetSeeAllDraftsData", "Home")',
selectUrl: '@Url.Action("GetDraftJourney", "Home")',
deleteUrl: '@Url.Action("DeleteDraftBooking", "Home")',
};
var journeyDraftsViewModel = new JourneyDraftsViewModel(url);
ko.applyBindings(journeyDraftsViewModel, $("#myModalSeeAllDrafts")[0]);
我收到一个错误,未捕获的语法错误:您不能对同一元素多次应用绑定。
是不是,你一到别的页面,那个视图的绑定就已经过期了?
请帮忙。
您必须将第二个绑定更改为此:$("#myModalSeeAllDrafts")[1]
但这不是一个好方法,因为您有 2 个或更多元素具有相同的 ID:您可以将 ID 作为参数发送到局部视图中包含元素。
@Html.Partial("_SeeAllDrafts", "id2")
@Html.Partial("_SeeAllDrafts", "id1")
部分:
@model string
<div id='@Model'>
<span data-bind="text: name"></span>
</div>
然后将您的绑定更改为
@section scripts
{
<script type="text/javascript">
$(function () {
var journeyDraftsViewModel = { name: "refan" };
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id1'));
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id2'));
});
</script>
}
--------------------或者--------------------
您可以使用具有不同 ID 的 div 包装您的部分:
<div id="id1">
@Html.Partial("_SeeAllDrafts")
</div>
<div id="id2">
@Html.Partial("_SeeAllDrafts")
</div>
$(function () {
var journeyDraftsViewModel = { name: "refan" };
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id1'));
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id2'));
});
然后根据这个ids进行绑定
--------------------如果你没有任何其他绑定---------------- -----
您可以在文档准备好后对整个页面进行一次装订。
$(document).ready(function () {
var journeyDraftsViewModel = new JourneyDraftsViewModel(url);
ko.applyBindings(journeyDraftsViewModel);
});
在着陆页中,我将绑定应用于局部视图。 ("myModalSeeAllDrafts")
着陆页:
@Html.Partial("~/Views/Home/JumpStartYourJourney/_SeeAllDrafts.cshtml")
var journeyDrafts = {
dataUrl: '@Url.Action("GetSeeAllDraftsData", "Home")',
selectUrl: '@Url.Action("GetDraftJourney", "Home")',
deleteUrl: '@Url.Action("DeleteDraftBooking", "Home")'
};
var journeyDraftsVM = new JourneyDraftsViewModel(journeyDrafts);
ko.applyBindings(journeyDraftsVM, $("#myModalSeeAllDrafts")[0]);
我想从另一个角度重用部分
旅行者观点:
@Html.Partial("~/Views/Home/JumpStartYourJourney/_SeeAllDrafts.cshtml")
var url = {
dataUrl: '@Url.Action("GetSeeAllDraftsData", "Home")',
selectUrl: '@Url.Action("GetDraftJourney", "Home")',
deleteUrl: '@Url.Action("DeleteDraftBooking", "Home")',
};
var journeyDraftsViewModel = new JourneyDraftsViewModel(url);
ko.applyBindings(journeyDraftsViewModel, $("#myModalSeeAllDrafts")[0]);
我收到一个错误,未捕获的语法错误:您不能对同一元素多次应用绑定。 是不是,你一到别的页面,那个视图的绑定就已经过期了?
请帮忙。
您必须将第二个绑定更改为此:$("#myModalSeeAllDrafts")[1]
但这不是一个好方法,因为您有 2 个或更多元素具有相同的 ID:您可以将 ID 作为参数发送到局部视图中包含元素。
@Html.Partial("_SeeAllDrafts", "id2")
@Html.Partial("_SeeAllDrafts", "id1")
部分:
@model string
<div id='@Model'>
<span data-bind="text: name"></span>
</div>
然后将您的绑定更改为
@section scripts
{
<script type="text/javascript">
$(function () {
var journeyDraftsViewModel = { name: "refan" };
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id1'));
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id2'));
});
</script>
}
--------------------或者--------------------
您可以使用具有不同 ID 的 div 包装您的部分:
<div id="id1">
@Html.Partial("_SeeAllDrafts")
</div>
<div id="id2">
@Html.Partial("_SeeAllDrafts")
</div>
$(function () {
var journeyDraftsViewModel = { name: "refan" };
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id1'));
ko.applyBindings(journeyDraftsViewModel, document.getElementById('id2'));
});
然后根据这个ids进行绑定
--------------------如果你没有任何其他绑定---------------- -----
您可以在文档准备好后对整个页面进行一次装订。
$(document).ready(function () {
var journeyDraftsViewModel = new JourneyDraftsViewModel(url);
ko.applyBindings(journeyDraftsViewModel);
});