안녕하세요, 동료 프로그래머 님knockout + partials + mvc + 올바른 바인딩 방법
나는 피클에 빠져 들었습니다. 필자는 지금 2 주 동안 knockout에 있었고 인스턴트 메신저 나는 그것의 기본적인 생각을 이해하지 못한다. 그러니 나와 친하게 지내십시오.
상황 :
나는 간단하게 할 수있는 마스터 뷰 레이아웃 페이지/주인을 얻었다. 여기에 2 열 레이아웃이 있습니다. 왼쪽에 환자가있는 목록 상자를 클릭하면, 그 아래에있는 목록 상자에 처방전이 추가됩니다. 아주 간단합니다 ...
그나마 마음 여기에 renderbody,이 문제가있는 것입니다. 이 이미지를 사용하여 큰 부분 2 개를 봅니다. 빨간색과 노란색.
이제 나는 주인님을 잘 보았습니다. 환자를 클릭하면 화면의 노란색 부분에 특정 부분보기를로드하려고합니다. 처방전을 클릭하는 것과 마찬가지로, 노란색 부분에 처방전 부분을 적재하고 싶습니다.
나는이 2 개의 편집 스크린을 가지고 있지만 마스터는 포함하지 않았다. 이 페이지는 다음과 같습니다 :
@model FysioNotes.WebMVC.Models.ViewModels.EditPatientViewModel
형태 + 여기
@section 스크립트 {
<script src="~/MyScripts/patientVm.js" />
<script>
$(function() {
ko.applyBindings(new editPatientVm(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model))));
});
</script>
} 당신은 내가 데이터를 입력하려면 여기를 면도칼을 사용하는 것을 볼
바인딩 editPatientVm. js 파일은 다음과 같습니다.
var patientVm = function (data) ...
var editPatientVm = function (data) ...
var createPatientVm = function (data) ...
처방전과 동일합니다. 이제 처방전 부분을 화면의 노란색 부분에로드하려고 할 때 이렇게하려고합니다. 그리고 이것은 당신이 볼처럼 고정 된 수의 12836 이런 식으로 그것을 할 완전히 잘못된 것입니다 .... 아마
-- this is at the bottom of the master view --
<script type="text/javascript">
$(document).ready(function() {
$('#tablePrescriptions').on('click', 'tr', function (event) {
var selectedId = $(this).data("prescriptionid");
// this data gets filled without troubles
$(this).addClass('selectedrow').siblings().removeClass('selectedrow');
openDetail("prescription", selectedId);
});
매우 결함이 다음이 기능
function openDetail(type, selectedId) {
if (debug)
alert(type + " : " + selectedId);
var url = baseurl + "/Prescription/Edit?prescriptionId=" + selectedId;
$("#mainContent").load(url);
//CHECK THIS
ko.cleanNode($("#mainContent")[0]);
$("#mainContent").load(url, function() {
//ko.applyBindings(new viewModel(), $("#mainContent")[0]);
ko.applyBindings(new editPrescriptionVm(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(new FysioNotes.WebMVC.Models.ViewModels.EditPrescriptionViewModel(12836)))), document.getElementById("mainContent"));
});
}
. 하지만이 방법이 효과가 있다면 시도해보고 싶었습니다.
<script src="~/MyScripts/patientVm.js"></script>
<script src="~/MyScripts/prescriptionVm.js"></script>
<script>
$(function() {
ko.applyBindings(new masterVm(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model))));
})
</script>
:하지만 Apparantly 히 나는 그래서이
마스터 뷰는 하단에있는이있다 완전히 뭔가 잘못하고 메신저 생각에 저를 보자 ....이 불가능하기 때문에, 면도기에 JS의 VAR을 보내 질수
나는 부분 모델에서 주인의 뷰 모델에 필요한 뷰 모델을 넣어야한다고 생각하십니까? 그런 다음 물마루를 보냅니다. 그러나 이것은 모든 뷰 모델이 마스터에 있어야 함을 의미합니다. 이것은 초기 로딩에 좋지 않습니다! 그리고 이것은
가 :(