나는 녹아웃을 배우고 있으며 한 가지 문제가 있습니다. 'Add New Make'와 'Add new model'의 두 가지 추가 버튼이 있습니다. '추가'를 클릭하면 모달 팝업을 열고 클릭 한 버튼을 기반으로 자동차 제조업체 또는 자동차 모델 중 하나의 텍스트를 입력하고 싶습니다. 같은 모달 팝업을 공유하고 싶지만 다른 제목과 텍스트를 모달에도 표시하려고합니다. '새 모델 추가'를 클릭하면 자동차의 MakeId도 전달하려고합니다. 아래는 내 ViewModel입니다. 나는 더 나은 방법이 있다고 믿는다. 내가 틀렸다면 나를 바로 잡으세요 !!하나의 부트 스트랩 모달 팝업에서 녹아웃 다중 바인딩
$(function() {
var VehicleBasic = function() {
var self = this;
self.VIN = ko.observable();
self.selectedYear = ko.observable();
self.Years = ko.observableArray([]);
self.selectedMake = ko.observable();
self.Makes = ko.observableArray([]);
self.NewMake = ko.observable();
self.selectedModel = ko.observable();
self.MyModels = ko.observableArray([]);
self.NewModel = ko.observable();
self.Styles = ko.observableArray([]);
self.selectedStyle = ko.observable();
self.ShowModels = ko.computed(function() {
if (self.selectedMake())
return true;
return false
});
self.ClearAddMake = function() {
self.NewMake('');
};
self.AddNewMake = function (NewMake) {
debugger;
$.ajax({
url: "ChromeOptimization.aspx/AddMake",
async: false,
data: JSON.stringify({ 'make': NewMake.NewMake() }),
dataType: "json",
type: 'POST',
contentType: "application/json; charset=utf-8",
success: function (data) {
$.each(data.d, function (index, v) {
self.Makes.push(v);
});
}
});
};
self.ClearAddNewModel = function() {
self.NewModel('');
};
self.AddNewModel = function (newModel) {
debugger;
$.ajax({
url: "ChromeOptimization.aspx/AddNewModel",
async: false,
data: JSON.stringify({ 'makeId': self.selectedMake(), 'model': newModel }),
dataType: "json",
type: 'POST',
contentType: "application/json; charset=utf-8",
success: function (data) {
$.each(data.d, function (index, v) {
self.Makes.push(v);
});
}
});
};
}
var viewModel = new VehicleBasic();
var vin = '';
$.ajax({
url: "ChromeOptimization.aspx/GetBase",
async: false,
data: { vin: vin },
dataType: "json",
type: 'GET',
contentType: "application/json; charset=utf-8",
success: function (data) {
viewModel.Makes(data.d.Makes);
viewModel.VIN = data.d.VIN;
viewModel.Years = data.d.Years;
viewModel.selectedMake(data.d.selectedMake);
}
});
viewModel.selectedMake.subscribe(function (makeId) {
viewModel.MyModels.removeAll();
viewModel.selectedModel(undefined);
viewModel.selectedStyle(undefined);
if (makeId != undefined || makeId != null) {
$.ajax({
url: "ChromeOptimization.aspx/GetModels",
async: false,
data: { MakeId: makeId },
dataType: "json",
type: 'GET',
contentType: "application/json; charset=utf-8",
success: function (data) {
$.each(data.d, function (index, v) {
viewModel.MyModels.push(v);
});
viewModel.selectedModel(undefined);
}
});
}
});
viewModel.selectedModel.subscribe(function() {
viewModel.Styles.removeAll();
viewModel.selectedStyle(undefined);
if (viewModel.selectedMake() && viewModel.selectedModel()) {
$.ajax({
url: "ChromeOptimization.aspx/GetStyles",
async: false,
data: { makeId: viewModel.selectedMake(), modelId: viewModel.selectedModel() },
dataType: "json",
type: 'GET',
contentType: "application/json; charset=utf-8",
success: function (data) {
$.each(data.d, function (index, v) {
viewModel.Styles.push(v);
});
viewModel.selectedStyle(undefined);
}
});
}
})
ko.applyBindings(viewModel, $('#divBasicInformation').get(0));
})
무엇이 문제입니까? –
바인딩을 시작하는 방법을 모르겠습니다. – Santosh
바인딩을 시작 하시겠습니까? –