當ajax json響應回來時,您使用了Knockout js的哪些最佳實踐。淘汰js最佳實踐ajax錯誤處理
如何創建映射以便向用戶顯示錯誤? 如何更改Knockout js中表單的綁定以適應錯誤?
我發回的一個響應對象{響應:「成功」,數據:{}},這種裝置有3個級別的錯誤的:
- 模型誤差(的JSON對象響應「失敗」,有哪些領域的模型數據是錯誤的)
- 服務器錯誤(服務器沒有響應)
- 服務器,錯誤代碼爲
還沒有想出顯示的乾淨的視圖模型的方式迴應呃或消息,這就是爲什麼我問。
當ajax json響應回來時,您使用了Knockout js的哪些最佳實踐。淘汰js最佳實踐ajax錯誤處理
如何創建映射以便向用戶顯示錯誤? 如何更改Knockout js中表單的綁定以適應錯誤?
我發回的一個響應對象{響應:「成功」,數據:{}},這種裝置有3個級別的錯誤的:
還沒有想出顯示的乾淨的視圖模型的方式迴應呃或消息,這就是爲什麼我問。
就我個人而言,我只會在成功時更新淘汰賽模式。然後這會使模型處於與錯誤之前相同的狀態。
在出現錯誤的情況下,您可以執行任何操作,告訴用戶出現了錯誤。我會使用humane.js向用戶顯示一條消息,指出由於某種原因更新或創建失敗。在您的三種模型錯誤,無響應或服務器錯誤的情況下,您可以檢查錯誤功能中的帖子狀態,並選擇不同的消息以向用戶顯示。
然後他們可以自由地做同樣的事情再次,或糾正他們的錯誤,然後再試一次。
$.post("somewhere")
.success(function() {
// update knockout models here
})
.error(function() {
// show error message to user
})
.complete(function() {
// reset any temporary variables
});
的方式,我拿出在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>
Javascript Try-Catch仍然缺少此模型,因爲我不確定pl acement