I am trying to load handlebars templates and rendering them via deferred objects / promises, but when i refactored the code by putting in deferreds , errors are occurring:
My view is as follows:
var indexView = Backbone.View.extend({
initialize: function (options) {
this.options = options || {};
manager.getTemplate('path/to/template').then(function(tpl){
// tpl is a handlebar compiled template,returned by getTemplate
this.template = tpl;
this.render();
// that causes
// Uncaught TypeError: Object #<Object> has no method 'render'
// "this" is Backbone.View.extend.initialize
});
},
render: function (){
// this.options is undefined
this.$el.html(this.template(this.options.data));
return this;
}
});
i can't understand how i'm supposed to reach this.render from the .then() function and also why in the render() function this.options is now undefined
Thank you
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…