2013-04-09 4 views
0

경로, 컨트롤러,보기가 있습니다. 문제는 내가 뷰어에서 컨트롤러 기능 reloadTime을 호출했는데 reloadTime 함수에서이 컨트롤러의 내용을 콘솔에 넣었지만 undefined이라고합니다. 제 질문은 엠버에서이 콘텐츠에 액세스하는 방법입니다.컨트롤러 기능 내에서 내용에 액세스하십시오.

App.ActivecallsRoute = Ember.Route.extend({ 
    setupController:function(controller,model){ 
     $.ajax({ 
      url:'requests/activecalls.php', 
      type:'POST', 
      success:function(data){ 
       App.Cdrglobal.set('active_call',data.length); 
       controller.set('content',data); 
      } 
     }) 
    } 
}); 

App.ActivecallsController = Ember.ArrayController.extend({ 
    content:[], 
    deleteCall:function(model){ 
     var obj = this.findProperty('ID',model.ID); 
     App.Cdrglobal.set('active_call',App.Cdrglobal.active_call-1); 
     this.removeObject(obj); 
    }, 
    reloadTime:function(){ 
     console.log(this.get('content'));//console undefined 
     console.log(this.content);console undefined 
    } 
}); 


App.ActivecallsView = Ember.View.extend({ 
    didInsertElement:function(){ 
     this.get('controller').reloadTime(); 
    } 
}); 

답변

3

content 속성에 올바르게 액세스하고 있습니다. undefined을 얻는 이유는 content 속성이 실제로 정의되지 않았기 때문입니다.

content이 정의되지 않은 이유는 Ember.js가 컨트롤러의 내용을 경로의 후크 값인 model에 자동으로 설정하기 때문입니다. 이 훅은 undefined이므로 Ember.js이 undefined에 컨트롤러 content 속성을 설정하면 당신은 model 방법, 반환 값을 정의하지 않았기 때문에

.

솔루션 :

App.ActivecallsRoute = Ember.Route.extend({ 
    setupController:function(controller,model){ 
    $.ajax({ 
     url:'requests/activecalls.php', 
     type:'POST', 
     success:function(data){ 
     App.Cdrglobal.set('active_call',data.length); 
     controller.set('content',data); 
     } 
    }); 
    }, 
    model: function() { 
    return []; 
    } 
}); 
:

그냥 빈 배열을 반환 더미 모델 후크 만들기

관련 문제