0

(js初心者はこちら)

私はオーバーロードしましたRESTAdapter

/*
  The default RESTAdapter in the application.

  An instance of this object will be created automatically.
*/

MyApp.Adapter = DS.RESTAdapter.extend({
    ajax: function(url, type, hash) {
        var ajax_reply = this._super(url, type, hash);
        console.log('ajax_reply (promise) -> '); console.log(ajax_reply);
        return ajax_reply;
    }
});

promiseこれで、コンソールに表示されるものを取得できます。

約束

.thenメソッド にフックしてjson、ajax 呼び出しによって返されたデータを表示できるようにしたいと思いますが、RESTAdapter. たとえば、RESTAdapter.findメソッドは次のとおりです。

  find: function(store, type, id) {
    var root = this.rootForType(type), adapter = this;

    return this.ajax(this.buildURL(root, id), "GET").
      then(function(json){
        adapter.didFindRecord(store, type, json, id);
    }).then(null, DS.rejectionHandler);
  },

.thenメソッドを介して渡されたすべてのjson応答をコンソールで確認したいと思います。どうすればプロミスに「フック」できますか?

4

2 に答える 2

2

このようなものが動作するはずです:

MyApp.Adapter = DS.RESTAdapter.extend({
  ajax: function(url, type, hash) {
    var ajaxPromise = this._super(url, type, hash);
    ajaxPromise.then(function(json){
      console.log(json);
    });
    return ajaxPromise;
  }
});
于 2013-06-14T18:38:40.633 に答える
1

すべての応答をログに記録する.ajax()には、@LukeMelia の提案に従ってください。

MyApp.Adapter.ajax()特定の呼び出しへの応答をログに記録するには、次を試してください。

MyApp.Adapter.ajax(url, type, hash).then(function(json) {
    console.log(json);
}, function() {
    console.log('.ajax error');
});
于 2013-06-14T19:16:01.610 に答える