Nasıl hatalar ember.js Veri RESTAdapter kullanırken ele alınmalıdır?
ember-data.js: https://github.com/emberjs/data/tree/0396411e39df96c8506de3182c81414c1d0eb981
Kısacası, ne zaman bir hata var, istiyorum ekran hata iletileri görüntülemek ve kullanıcı 1) iptal edecek geri alma işlem 2) doğru giriş hataları ve başarıyla tamamlama hareket, geçen doğrulaması sunucu.
Aşağıda kaynak kod parçacığı. Bir hata geri içermez.
updateRecord: function(store, type, record) {
var id = get(record, 'id');
var root = this.rootForType(type);
var data = {};
data[root] = this.toJSON(record);
this.ajax(this.buildURL(root, id), "PUT", {
data: data,
context: this,
success: function(json) {
this.didUpdateRecord(store, type, record, json);
}
});
},
Genel olarak, sunucu bir hata alma ve görünümü güncelleme akışı nedir? Bir hata geri arama isError
bir devlet modeli koymak gerekir gibi görünüyor, ve sonra Görünüm uygun mesajları görüntüleyebilirsiniz. Ayrıca, bu işlem kirli kalmalı. Bu şekilde hareket rollback
kullanabilirsiniz.
store.recordWasInvalid
kullanarak doğru yönde, ama olacak gibi görünüyor.
CEVAP
Bu hafta sonu aynı şeyi anlamaya çalışıyordum. Luke dediğini gidiyor, latest commit için kor-veri kaynağı (Aralık 11) daha yakından bir göz attım.
TLDR; ele ember-veri güncelleme/hatalar, sadece becameError()
DS.Model
örnek becameInvalid(errors)
tanımlamak oluşturun. Bu cascade RESTadapter. AJAX hata geri arama tetiklediği sonunda bu işlevleri tanımlamak arayacak.
Örnek:
App.Post = DS.Model.extend
title: DS.attr "string"
body: DS.attr "string"
becameError: ->
# handle error case here
alert 'there was an error!'
becameInvalid: (errors) ->
# record was invalid
alert "Record was invalid because: #{errors}"
İşte bu kaynak üzerinden tam yürüyüş:
DİNLENME adaptör, AJAX geri arama hata fonksiyonu here verilmektedir
this.ajax(this.buildURL(root, id), "PUT", {
data: data,
context: this,
success: function(json) {
Ember.run(this, function(){
this.didUpdateRecord(store, type, record, json);
});
},
error: function(xhr) {
this.didError(store, type, record, xhr);
}
});
didError here tanımlanmış ve teslim cevaba göre: mağazanın recordWasİnvalid veya recordWasError çağırır
didError: function(store, type, record, xhr) {
if (xhr.status === 422) {
var data = JSON.parse(xhr.responseText);
store.recordWasInvalid(record, data['errors']);
} else {
store.recordWasError(record);
}
},
Sırayla, store.recordWasInvalid
store.recordWasError
(here tanımlı) Arama Kaydı (DS.Model)'in işleyicileri. Geçersiz durumda, birlikte bir değişken olarak adaptöründen hata iletileri geçirir.
recordWasInvalid: function(record, errors) {
record.adapterDidInvalidate(errors);
},
recordWasError: function(record) {
record.adapterDidError();
},
Son olarak 33**: işleyicileri için bizleri DS.Model.adapterDidInvalidate
adapterDidError
(here tanımlı) sadece send('becameInvalid', errors)
send('becameError')
didLoad: Ember.K,
didUpdate: Ember.K,
didCreate: Ember.K,
didDelete: Ember.K,
becameInvalid: Ember.K,
becameError: Ember.K,
(Ember.K this
döndürmek için sadece boş bir fonksiyonudur. ** 34)
Yani, sonuç olarak, sadece model üzerinde becameInvalid
becameError
Bu durumlarda işlemek için işlevleri tanımlamak gerekir.
Bu başkası yardımcı olur; doktorlar kesinlikle bunu hemen yansıtmak olmaz umarım.
Nasıl EmberJS / Ember Veri tek bir rot...
Nasıl bir WordPress kullanmak yakalama...
Veri bağlama Nasıl çalışır?AngularJS :...
Nasıl tarih sadece SQL Server datetime...
Nasıl terminalden Curl ile JSON veri g...