2014-01-08 2 views
2

응용 프로그램 컨트롤러의 변수를 AJAX 호출에서 반환 된 값으로 재설정하려고합니다. 'this'에 올바른 문맥이 없기 때문에 아래에 표시된 코드가 작동하지 않습니다. 서버는 15와 다른 값을 반환하지만 두 번째 console.log는 여전히 15를 출력합니다. App.ApplicationController.set ('x', data) 및 controllers.application.set ('x', data) 및 다른 가능성은 거의 없습니다. 아무도 일하지 않았다. 이 작업을 수행하는 올바른 방법은 무엇입니까?AJAX 호출에서 반환 된 결과에 응용 프로그램 컨트롤러 변수 설정

App.ApplicationController = Ember.Controller.extend({ 

x: 15, 

init: function() { 
console.log(this.get('x')); 
$.getJSON ("strats/limits.json") 
    .done (function (data){this.set('x', data);}); 
    console.log(this.get('x')} 
}); 

답변

2

너의 단지 JavaScript 문제는 ...이 시도 :

App.ApplicationController = Ember.Controller.extend({ 

    x: 15, 

    init: function() { 
     var self= this; 
     console.log(self.get('x')); 
     $.getJSON ("strats/limits.json") 
      .done (function (data){self.set('x', data);}); 
     console.log(self.get('x'); 
    } 
}); 

항상 조심해야 "이"와 다른 값을 가질 수있다 중첩 된 기능을 기억하여!

+0

두 번째 console.log는 항상 첫 번째와 동일한 값을 인쇄합니다. 'getJSON()'는 블록하지 않고, 즉시 반환하고 나중에 비동기 적으로'done' 함수를 호출합니다. –

관련 문제