0
我定義這個JavaScript視圖模型:KnockoutJS:使用ko.toJSON(this)時,初始值不會發布到服務器?
function PersonViewModel() {
// Data members
this.Name = ko.observable();
this.Function_Id = ko.observable();
this.SubFunction_Id = ko.observable();
this.Functions = ko.observableArray();
this.SubFunctions = ko.observableArray();
// Whenever the Function changes, update the SubFunctions selection
this.Function_Id.subscribe(function (id) {
this.GetSubFunctions(id);
}, this);
// Functions to get data from server
this.Init = function() {
this.GetFunctions();
this.Function_Id('@(Model.Function_Id)');
};
this.GetFunctions = function() {
var vm = this;
$.getJSON(
'@Url.Action("GetFunctions", "Function")',
function (data) {
vm.Functions(data);
}
);
};
this.GetSubFunctions = function (Function_Id) {
var vm = this;
if (Function_Id != null) {
$.getJSON(
'@Url.Action("GetSubFunctions", "Function")',
{ Function_Id: Function_Id },
function (data) {
vm.SubFunctions(data);
}
);
}
else {
vm.SubFunction_Id(0);
vm.SubFunctions([]);
}
};
this.Save = function() {
var PostData = ko.toJSON(this);
var d = $.dump(PostData);
alert(d);
$.ajax({
type: 'POST',
url: '/Person/Save',
data: PostData,
contentType: 'application/json',
success: function (data) {
alert(data);
}
});
};
}
$(document).ready(function() {
var personViewModel = new PersonViewModel();
personViewModel.Init();
ko.applyBindings(personViewModel);
});
當點擊提交按鈕,從選擇列表中的數據被公佈,但不是「Function_Id」。
當我在功能下拉列表中選擇一個不同的值,然後單擊提交按鈕,'Function_Id'的值被正確發佈。
如何解決這個問題?
Function_Id不是this.Function_Id,它只是傳遞給具有相同名稱的函數的參數。 –