2014-08-31 1 views
1

저는 Ember에게 매우 익숙하며 외부 모델 (제품)에 대한 정보를 표시하는 템플릿을 설정하려고합니다. 그래서 관리자의 경로가 :Ember가 오류를 일으키는 경로에서 모델을 정의했습니다.

App.AdminRoute = Ember.Route.extend({ 
    model: function() { 
     var admin_brand = this.store.find('brand', 1); 
     return this.store.find('product', {brand: admin_brand}); 
    } 
}); 

컨트롤러 :

App.AdminController = Ember.ArrayController.extend({ 

}); 

및 템플릿 :

<script type="text/x-handlebars" data-template-name="admin"> 
    <div class="row"> 
     {{#each}} 
      {{name}} 
     {{/each}} 
    </div> 
</script> 

그러나 나는 JS 오류 받고 있어요 :

Error while processing route: admin undefined is not a function TypeError: undefined is not a function 

I을 또한 ember-data-django-rest-adapter를 사용하고 있습니다. 내 실제 데이터 (그렇지 않으면 잘 작동하는 것 같다). 경로에 객체의 정적 배열을 전달하면 잘 동작합니다. 내가 뭘 잘못하고 있는지에 대한 어떤 생각? 또한 이것에 대해서도 올바른 방법일까요? 마지막으로 이러한 유형의 문제를 디버깅하는 더 좋은 방법이 있습니까? Chrome 확장 프로그램이 있지만 매우 일반적인 오류로 인해 도움이되지 않는 것 같아서 다른 팁도 도움이 될 것입니다. 도움을 많이 주셔서 감사합니다.

답변

1

당신이 타다 남은 데이터를 사용하는 가정 ...

문제는 this.store.find('brand', 1)에 대한 호출이 약속이 아닌 값을 반환한다는 것입니다. this.store.find('product', {brand: admin_brand})에 대한 호출에서 값을 사용하려면 .then()을 사용하여 해결 된 값에 액세스해야합니다.

이와 비슷한 기능이 작동합니다.

App.AdminRoute = Ember.Route.extend({ 
    model: function() { 
     var self = this; 
     return self.store.find('brand', 1).then(function(admin_brand){ 
      return self.store.find('product', {brand: admin_brand}) 
     }); 
    } 
}); 
+0

정말 고마워요.하지만 불행히도 저는 여전히 오류 (새로운 것이 어쨌든)에 빠져 있습니다. '경로를 처리하는 중 오류가 발생했습니다 : admin 정의되지 않은 'find'속성을 읽을 수 없습니다. TypeError : find ('product')에서 'find'of undefined' 속성을 읽을 수 없습니다. 이 경우 제어기 또는 템플리트에서 특정 작업을 수행해야합니까? 좀 더 파고 가면 문제를 유발할 수있는 다른 문제가 발생할 수 있다고 생각합니다. (엠버 디버거를보고 내 제품 객체가 항상 존재하지는 않지만 제품을 방문한 후/1 그들은 디버거에 추가됩니다) – tcmurphy

+1

그 문제는 범위입니다 발행물. 나는이 코드 대신'this' 대신'self'를 사용하도록 코드를 수정했습니다. 위의 코드로 시도해보고 작동하는지 확인하십시오. – tikotzky

+0

아아 네, 또한 합리적으로 새로운 오류가 발생합니다 : 경로를 처리하는 중 오류가 발생했습니다 : admin 최대 호출 스택 크기 초과 RangeError : 최대 호출 스택 크기가 초과했습니다 encodeURIComponent (native)에서 – tcmurphy

관련 문제