modelとview
modelで取得したデータをviewで表示できなくはまったので_φ(。_。*)
これで解決!
model側
var ProjectListModel = Backbone.Model.extend({ defaults: {}, initialize: function() {}, getProjectList: function() { var self = this; var request = $.ajax({ url: '/management/projects', type: 'GET', contentType: 'application/json; charset=utf-8', beforeSend: function(jqXHR) { jqXHR.setRequestHeader('X-Auth-Token', globals.auth.token); } }); request.done(function(data) { self.set({ data: data }); <<<====取得に成功したら場合 }); request.fail(function(jqXHR, textStatus) { if(!window.console){ window.console = {log: function(){} }; } window.console.log('Request of getInstanceTypes failed: ' + textStatus); }); }
view側
initialize: function() { var self = this; this.model.getProjectList(); <<<====ここでmodelを呼んでデータ取得命令 this.model.on('change', this.outputData, this); <<<====ここでmodel側のデータに変更の有無を確認している }, outputData: function() { console.log(JSON.stringify(this.model.get('data'))); <<<=====ここで表示 },
はまった理由は、initializeのmodel.getProjectList()の下でconsole.log出力していた。
modelとviewは非同期なので、取得中でデータがない状態で出力しようとしていたので、
this.model.on('change', this.outputData, this);
でデータに変更があったかをチェックして変更している場合は出す処理にかえた。
手強いw 一年生がんばるぞ!