Próbuję utworzyć małą aplikację backbone.js, ale zmagam się z kolejnością rzeczy.renderowanie widoku backbone.js przed pobieraniem modelu
W moim pliku html, mam dwa bloki skrypt w nagłówku:
<script type="text/template" id="model-template">
<a href="#"><%= title %></a>
</script>
<script type="text/javascript">
jQuery(function(){
window.model.fetch();
});
</script>
W moich app.js, mam zdefiniowane prosty model, widok i routera.
(function($) {
window.MyModel = Backbone.Model.extend({
url: '/mymodel'
});
window.mymodel = new MyModel();
$(document).ready(function() {
window.MyModelView = Backbone.View.extend({
template: _.template($('#mymodel-template').html()),
initialize: function() {
_.bindAll(this, 'render');
},
render: function() {
var renderedContent = this.template(this.model.toJSON());
$(this.el).html(renderedContent);
return this;
}
});
});
window.MyApp = Backbone.Router.extend({
routes: {
'': 'home'
},
initialize: function() {
this.myModelView = new MyModelView({
model: window.mymodel
});
},
home: function() {
var $body = $('body');
$body.empty();
$body.append(this.myModelView.render().el);
}
});
$(function() {
window.App = new MyApp();
Backbone.history.start({pushState: true});
});
})(jQuery);
Aplikacja jest obsługiwana przez prostą aplikację Sinatra. Url /mymodel
służy statyczny plik json:
{
"title": "My Model",
}
Podczas ładowania aplikacji, pojawia się błąd w konsoli javascript:
Uncaught ReferenceError: title is not defined
Problem wydaje się, że widok renderuje się przed model jest pobierany z serwera. Dlaczego?
Wczoraj poszedłem do pierwszych dwóch screencastów backbone.js z PeepCode. Próbowałem porównać moją aplikację z tą, która pojawiła się w screencastach, ale nie widzę powodu, dla którego moja aplikacja wymaga pracy.
Wszelkie sugestie?
Zajęło mi godziny ... GODZIN, aby dowiedzieć się, że to dlatego moja aplikacja nie działała, działała kilka razy, nie pracowała nad niektórymi przeglądarkami, a nie nad innymi. Rodzaj pomyłki debiutanta, kiedy myślisz o tym, jak powinno działać moje pobieranie. Lekcja. Myślę, że zbyt wiele przykładów szkieletów wykorzystuje surowo zakodowane dane i bardzo ważne koncepcje, takie jak ten upadek. – IcedDante