Уважаемые коллеги-программистынокаут + частичные + mvc + правильный способ привязки
Я попал в рассол. Я был в нокауте примерно на 2 недели, и я боюсь, что не понимаю его основной идеи. Будьте осторожны со мной.
Ситуация:
Я получил мастер вид макета страницы/Master, чтобы сделать его простым. Здесь я получил 2 колонки. Слева список с пациентами, после нажатия одного, вы увидите рецепты, добавленные в список ниже. довольно просто ...
Dont Разум renderbody здесь, это неисправно. Просто используйте это изображение, чтобы увидеть две большие части. Красный en и желтый.
Теперь у меня есть Мастер работает очень хорошо, когда я нажимаю на пациента, я хочу загрузить определенный частичный вид на желтую часть экрана. То же самое, нажав на рецепт, затем я хочу загрузить партию рецепта на желтую часть.
Я получил эти 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) ...
Это то же самое с рецептами. Теперь, когда я пытаюсь загрузить партию рецепта в желтую часть экрана, я пытаюсь сделать это вот так. И это, вероятно, очень неисправны ....
-- 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"));
});
}
, как вы видите, фиксированный номер 12836 совершенно неправильно делать это так. Но я хотел просто попробовать, если это сработает, и это произошло. Но Apparantly я не могу послать Js вар к бритве, потому что это невозможно .... так что пусть меня к мысли, что им делать что-то совершенно неправильно
мастер вид имеет это в нижней части:
<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>
Думаю, мне нужно, чтобы, возможно, мне нужно было рассмотреть модели, которые мне нужны в частичном в моей модели просмотра мастера? а затем отправить его, но это будет означать, что КАЖДЫЙ viewmodel должен быть на хозяине. Это не может быть полезно для начальной загрузки! И это кажется мне неправильным делать это так, но ив был неправ, прежде чем ....
пожалуйста, помогите :(