Geçtiğimiz günlerde Ember'den Ember CLI'ye geçiş yaptık ve bir modeli özel bir bağdaştırıcıyla ilişkilendirmek için uygun kuralları bulamadık.Özel bağdaştırıcıları belirli modellerle ilişkilendirmek için Ember CLI
Tarih Biz bu form verileri ve ikili veri bizim arka uç API [raylar] bir bitiş noktasına itti olabilir böylece onların oluşturma güzergahın parçası olarak bir dosya yükleme var modeller için bir adaptör yarattı. Bağdaştırıcı, isteği istek üzerine eklemek için FormData nesnesini kullanır. Bu bağdaştırıcıyı yalnızca dosyaları olan modellerde kullanmayı tercih ettim ve dosya olmayan yükleme modellerinde uygulama bağdaştırıcısını kullanıyorum. Bu yüzden, ember uygulamasının birden çok bağdaştırıcıyı desteklemesini istiyorum.
Özel Adaptörü: adaptörleri içinde /dosya-upload.js
"klasik" Kor, bu kongre aracılığıyla bir model üzerinde belirli bir adaptör kullanmak kor söylemek mümkün oldu iseimport DS from 'ember-data';
var FileUploadAdapter = DS.ActiveModelAdapter.extend({
ajaxOptions: function(url, type, hash) {
var self = this;
hash = hash || {};
hash.url = url;
hash.type = type;
hash.dataType = 'json';
hash.context = this;
//add post data to formdata object
if (hash.data && type != 'GET' && type !='DELETE') {
hash.processData = false;
hash.contentType = false;
var fd = new FormData();
var root = Object.keys(hash.data)[0];
for (var i = 0; i < Object.keys(hash.data[root]).length; i++) {
var key = Object.keys(hash.data[root])[i];
if (hash.data[root][key]) {
fd.append(root + "[" + key + "]", hash.data[root][key]);
}
}
hash.data = fd;
}
var headers = this.get('headers');
if (headers) {
hash.beforeSend = function(xhr){
for (var i = 0; i < Ember.keys(headers).length; i++) {
xhr.setRequestHeader(Ember.keys(headers)[i], headers[Ember.keys(headers)[i]]);
}
}
}
return hash;
}
});
export default FileUploadAdapter;
:
//given a model name "Person", specific adapter via {ModelName}Adapter
App.PersonAdapter = App.FileUploadAdapter.extend();
Ama şimdi bu genel nesnelerimiz Ember CLI'de yok, bir bağdaştırıcı belirtmenin bir yolu var mı? Modelimi dışa aktarmadan önce bir değişkene atamak istediğimi ve ek ayarların burada yapıldığını varsayalım.
Ember cli paradigmasına uymayı arzuluyorum, bu yüzden eğer bunun çok uzak olduğunu düşünüyorsanız lütfen bana bildirin. Bir bağdaştırıcı kullanıp dosya algılamayı yeniden yapılandırabilirdim, ancak özel işlevsellikleri birden çok bağdaştırıcıya ayırarak temizler.
Teşekkürler!
Fantastik ve eksiksiz bir yanıt. Bu, ember cli ve es6 mondüllerinin yapısı üzerinde güzel bir spot ışığı. –