我有兩個函數generate
和test
。當用戶點擊一個按鈕時generate
被調用,然後調用test
函數。我收到以下錯誤:傳遞函數返回ko.computed的值
Pass a function that returns the value of the ko.computed.
的錯誤是在這條線的測試功能:拋出
var unmapped = ko.mapping.toJS(this);
this
是我的視圖模型與ko.observable性能。
這裏有兩個功能。如果我將test
函數的內容移動到generate
一切正常,但我需要邏輯處於兩種不同的功能。我能做什麼?
我很困在這裏。任何幫助都會大大降低。
generate = function() {
if (!omega.validatableFranchiseGeneration.validate()) {
return false;
}
omega.franchiseInfo.IsForGeneration(true);
test();
}
var test = function() {
getIpsAndPorts();
for (var i = 0; i < omega.franchiseInfo.LanguagesInfoViewModel().length; i++) {
if ($.isArray(omega.franchiseInfo.LanguagesInfoViewModel()[i].SubMenuItemsViewModel)) {
omega.franchiseInfo.LanguagesInfoViewModel()[i].SubMenuItemsViewModel = omega.franchiseInfo.LanguagesInfoViewModel()[i].SubMenuItemsViewModel[0];
}
}
var unmapped = ko.mapping.toJS(this);
var jsonData = ko.toJSON(unmapped);
$.ajax({
url: "/franchise/Save",
type: "POST",
// data: ko.toJSON({ folderName: FolderName }),
data: { franchiseInfoViewModel: jsonData },
//traditional: true,
//contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data, textStatus, xhr) {
window.location.href = data.redirectToUrl;
},
error: function (request, status, error) {
jsonValue = jQuery.parseJSON(request.responseText);
omega.franchiseInfo.errorMessages([]);
for (var i = 0; i < jsonValue.errorMessages.length; i++) {
omega.franchiseInfo.errorMessages.push({ errorMessage: ko.observable(jsonValue.errorMessages[i].ErrorMessage) });
}
for (var i = 0; i < omega.franchiseInfo.LanguagesInfoViewModel().length; i++) {
InitializeViewLanguagesInfo(omega.franchiseInfo.LanguagesInfoViewModel()[i]);
}
}
});
}
謝謝你的回答。我重構了我的邏輯並轉向了另一種解決方案。不過,我接受你的答案。 – Mdb