Mam scenariusz, w którym wywołanie modelu z modelu fetch()
zwróci dane, z których właściwość będzie musiała zostać przekazana do innego interfejsu API, a typem zwracanym z tego interfejsu API będą faktycznie wymagane dane.Model szkieletowy: żądanie Ajax w analizie składniowej
var Issue = Backbone.Model.extend({
urlRoot: 'https://api.github.com/repos/ibrahim-islam/ibrahim-islam.github.io/issues',
parse: function(response, options){
var markdown = new Markdown({ text : response.body });
markdown.fetch({
contentType: 'application/json',
type: 'POST',
data: JSON.stringify(markdown.toJSON()),
success: function(data){
response.body = data;
}
});
return response;
}
});
var Markdown = Backbone.Model.extend({
defaults:{
'text': '',
'mode' : 'markdown'
},
url: 'https://api.github.com/markdown'
});
Więc gdy Issue
zostaną pobrane:
var issue = new Issue({id: 1});
issue.fetch().then(function(){
//do stuff
});
Będzie miał właściwość body
zawierającej markdown składni tekstu, który z kolei trzeba przekazać do innego API i uzyskać tę odpowiedź, która zostaną przekazane do obejrzenia.
Jak widać z góry, próbowałem przesłonić parse
, ale jego typem powrotu musi być obiekt, a fetch
będzie async
, więc co mogę zrobić, aby to zadziałało?
UWAGA: Wiem, że agregowanie danych na serwerze, a następnie odbieranie go będzie najlepszym pomysłem, ale nie jest to możliwe.
'JSON.stringify (markdown.toJSON())' - to byłoby podwójne kodowanie, jesteś pewien, że chcesz? – Tomalak
@ Tomalak Dopiero wtedy moja prośba przechodzi. Ale spróbuję jeszcze raz. Dzięki za przypomnienie. – lbrahim