तरह से मैं KO में त्रुटि हैंडलिंग लेकर आए हैं एक आधार वर्ग बनाने के लिए किया गया है:
errorHandlingViewModel = function() {
var self = this;
self.ErrorText = ko.observable();
self.errorHandler = function (jqXHR, textStatus, errorThrown) {
self.ErrorText('An error has occured, please refresh the page and try again in a little while. (' + textStatus + ':' + errorThrown + ')');
};
self.validationErrorHandler = function (err) {
//todo
alert('validation error ' + err);
}
self.successHandler = function (data, onSuccess) {
if (data.result == "success") {
if (onSuccess) {
onSuccess(data.data);
}
}
else {
if (data.data && data.data.Tag) {
if (data.data.Tag == "ValidationError") {
validationErrorHandler(data.data.Tag);
}
}
errorHandler(null, data.result, data.data);
}
};
};
यह एक नमूदार ErrorText क्षेत्र है।
मेरे सभी ViewModels इस त्रुटि से निपटने की जरूरत है कि मूलरूप विरासत का उपयोग कर सकते हैं:
viewModel.prototype = new errorHandlingViewModel();
var mainViewModel = new viewModel();
ko.applyBindings(mainViewModel, $("#locationTOApplyBindingTo")[0]);
इस दृश्य मॉडल ajax कॉल में देखने की तरह:
$.ajax({
type: 'POST',
url: myURL,
data: myData,
success: function (data) {self.successHandler(data,success);},
error: self.errorHandler
}); //end ajax
यूआई एक सामान्य डाटा-बाँध है:
<div class="error" data-bind="visible:ErrorText">
<div class="innerMSGContainer">
<div class="innerMSG" data-bind="text:ErrorText"></div>
</div>
</div>
जावास्क्रिप्ट का प्रयास करें-पकड़ने अभी भी इस मॉडल से लापता है के रूप में मैं pl को लेकर अनिश्चित हूं एसेमेंट