そのため、モデルをフェッチして、下のこのビューのテンプレートにレンダリングしようとすると、問題が発生します。調べてみると、やらなくてはいけないことがわかりました_.bindAll
が、それでもうまくいきません。ユーザーの名前を取得しようとしている最初のconsole.log内では、undefinedが返されます。this.render()
(フェッチの非同期性のために)成功コールバックに入れようとしましたが、機能しませんでした。何console.log(data)
が得られるかを調べると、必要な値が表示されますが、テンプレートに何も渡されていないようです。
define([
'jquery',
'underscore',
'backbone',
'models/UserModel',
'text!/assets/templates/dashboard.html'
], function($, _, Backbone, UserModel, dashboardTemplate) {
window.DashboardView = Backbone.View.extend({
el: $(".content"),
initialize: function() {
_.bindAll(this, 'render');
this.user = new UserModel();
this.user.fetch({
success: console.log(this.user.get("name")),
error: function(model, response) {
console.log("error fetching model");
console.log(model);
console.log(response);
}
});
},
render: function() {
console.log(this);
var data = {
user: this.user,
_: _
};
console.log(data);
var compiledTemplate = _.template(dashboardTemplate, data);
$(this.el).html(compiledTemplate);
}
});
return DashboardView;
});
誰かが光を当ててくれませんか?