2013-06-14 7 views
0

에 아약스 호출에 대한 답변보기 I 다음 응용 프로그램이 있습니다 당신이 볼 수 있듯이는 자바 스크립트 콘솔

var MyApp = Ember.Application.createWithMixins({ 
    LOG_TRANSITIONS: true, 
    VERSION: window.APPVERSION ? window.APPVERSION : '', 
    /** 
     Specifies what HTML element inside index.html Ember 
     should manage for you. 
    **/ 
    rootElement: window.TESTING ? '#qunit-fixture' : '#myapp', 
    /** 
     Hook, is invoked from the framework as soon the app becomes ready to use. 

     @method ready 
    **/ 
    ready: function() { 
     Ember.Logger.debug('DEBUG: MyApp.VERSION : ' + MyApp.VERSION); 
     Ember.Logger.debug('DEBUG: -------------------------------'); 
    }, 
    /** 
     Our own $.ajax method around jQuery's. Makes sure the .then method 
     executes in an Ember runloop for performance reasons. 

     @method ajax 
    **/ 
    ajax: function() { 
     var reply = $.ajax.apply(this, arguments); 
     Ember.Logger.debug('ajax reply : ' + reply); 
     return reply 
    }, 

    ... 
}); 

, 내가 콘솔에 아약스 응답의 내용을 참조하려고합니다. 그러나 나는 이것을 볼 수 없다. 서버에서 반환 한 데이터를 자바 스크립트 콘솔에 표시하려면 어떻게해야합니까? 나는 이미 (예를 들어, 크롬 개발자 도구에서) 네트워크 통신을 검사하여 이것을 볼 수 있지만 콘솔에서도 표시 할 수 있기를 바란다. (이유는 반환 된 데이터가 훌륭하지만 엠버 아무것도 렌더링하지 않으므로이 문제가 어디서 발생하는지 조사해야하며 엠버가받는 답안을 시각화하는 것으로 시작해야합니다.)

메서드가 전혀 호출되지 않았습니까? 그러면 왜 그곳에 있습니까?

답변

0

이었다 도움이되기를 바랍니다. 이것은 표준 엠버 방법이 아니므로 사용되지 않습니다.

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; 
    } 
}); 

MyApp.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: MyApp.Adapter.create() 
}); 

이 여전히 나를 json 응답을 볼 수 없습니다 (내가 약속을 참조 추가 논의 here를 볼 단지 수 있어요) : intuitivepixel 제안으로 올바른 접근 방식은,의 RESTAdapter.ajax 방법을 과부하하는 것입니다 , 그러나 올바른 방향으로 나아가는 단계입니다.

1

네임 스페이스 아래에 ajax 메서드가 있기 때문에 실제로 호출하려면 MyApp.ajax(...)을 사용하여 호출해야합니다. 또한 여분의 ajax을 제거하고 대신 ember의 ajax 메서드를 직접 사용할 수도 있습니다 (이는 jQuery의 래퍼입니다) $.ajax(...)을 시도해보십시오.

그러나 당신이 당신의 자신의 ajax 래퍼를 사용하려는 경우이 방법을 호출해야합니다 :

MyApp.ajax(url, { 
    data: { 
    ... 
    }, 
    type: 'POST' /* can be GET, PUT, POST etc... */ 
}); 

는 내가 MyApp.Application.ajax에 대한 잘못된

+0

감사합니다. 응용 프로그램 mixin에서'ajax' 메서드를 정의하면 ember가 자동으로이 메서드를 사용하여 모든 Ajax 요청을 수행한다는 것을 알고 있습니다. Mixin의'ajax' 메소드에서'.ajax'를하고 있습니다. 그러나 믹스 인에서의 '아약스 (Ajax)'방법은 전혀 호출되지 않았습니다. 왜 그런가요? – dangonfast

+0

Ember는 자동으로 사용하지 않습니다. 이는 MyApp.ajax가 절대 호출되지 않기 때문입니다. 호출을 원한다면'MyApp.ajax'를 호출해야합니다. 그렇지 않으면 내장 된'$ .ajax'를 사용합니다, 그러나 app.ready처럼'ajax' 래퍼 밖에서 ... – intuitivepixel

+0

래퍼가 있습니다. 유용하게도, 당신이 물건을 조정할 수있는 단일 지점을 가지고 있지만, 그것을 호출하기 위해 사용해야합니다. 나는 그것이 의미가 있기를 바랍니다. – intuitivepixel