私は、1つの投稿と1つの投稿の2つの機能を持つモデルを持っています。バックボーン+プロミス - ポスト後にフェッチする方法
フェッチ:
fetch: function (options) {
var self = this;
return P1Comm.get({
'dataType': 'json',
'processAjaxResponse': self.processAjaxResponse,
'onStatusInvalid': function (e) {
P1.log(e, 'status');
},
'onSuccess': options.success,
'onError': function (e) {
P1.log(e);
},
'sourceURL': P1.API_APPS_ROOT + 'v1.0/accepted-terms'
});
},
をポスト:
acceptTerms: function (appId) {
var self = this;
self.set({
'app_id': parseInt(appId,10)
});
self.createEdit(self.toJSON(), {
}).pipe(function() {
var def = $.Deferred();
var saveOpts = {
dataType: 'json',
stringify: true,
contentType: 'application/json',
processData: false,
processAjaxResponse: self.processAjaxResponse
};
self.save(self.toJSON(), saveOpts);
return def.promise();
});
},
をビューからのポストを呼び出す:acceptAppTerms.acceptTerms(1);
、それ自体でこれらの作業の両方が、私はそう、これを変更したいですそれ: - POSTを行うacceptTerms()
- 次にGETをfetch()
- そして、私はそれが(少なくとも最初の2点のために)このようなものになるだろうと思います
別の関数を呼び出す:
acceptAppTerms.acceptTerms(id).then(function() {
this.launchApp(event, id);
});
しかし、私はそれがないですUncaught TypeError: Cannot read property 'then' of undefined
のエラーが出ますフロントエンドで良い - 誰かが私を正しい方向に向けることができますか?
おかげ
UPDATE:作品以下
fetchAcceptedTerms: function() {
var self = this;
this.appAcceptedTerms = new T1AppAcceptedTerms();
this.acceptedTerms = new AppAcceptedTerms();
this.acceptedTerms.fetch({
success: function (data) {
if (data.meta.status === 'success') {
self.appAcceptedTerms.set(data.data);
}
}
});
},
例が、それはモデルへのデータの設定を破ります。
質問と回答の回答から、これはバックボーンQ&AではなくjQuery Q&Aに似ています。 .save()メソッドを除いて、他のすべてはjQueryを使用しています。おそらく、タイトルは "jQuery + Promises - 投稿後に取得する方法"で、タグはbackbone.jsからjQueryに切り替える必要がありますか?とにかく、Backbone .fetch()呼び出しを約束して動作させる方法と、まだ動作中のコードが見つからないという良い例を探しながら、これを見つけました。 – Clomp