2014-02-16 5 views
6

나는 엠버 (ember)를 처음 사용하며 매우 간단한 앱을 만들고 있습니다. 링크 된 태그에 의해 생성 된 링크를 클릭하여 내 브리더 인덱스 페이지 (/ 브리더)에서 브리더 쇼 페이지 (/ 브리더 스/: breeder_id)로 이동할 수 있습니다. 내가 수동으로 종축/1 나는 다음과 같은 오류가 다른 breeders.show 노선의로 이동하지만 경우 :Ember "Params is not defined"라우팅에서

Error while loading route: ReferenceError: params is not defined 
at Catapp.BreedersShowRoute.Ember.Route.extend.model 

나는 그이 원인이 무슨 짓을했는지 알아낼 수 없습니다.

//router.js 
    Catapp.Router.map(function() { 
     this.resource('breeders', function() { 
      this.route('new'); 
      this.route('show', {path: '/:breeder_id'}); 
     }); 
    }); 

    Catapp.IndexRoute = Ember.Route.extend({ 
     redirect: function(){ 
      this.transitionTo('breeders.index'); 
     } 
    }); 

    Catapp.BreedersIndexRoute = Ember.Route.extend({ 
     model: function(){ 
      return this.store.find('breeder'); 
     } 
    }); 

    Catapp.BreedersShowRoute = Ember.Route.extend({ 
     model: function(){ 
      return this.store.find('breeder', params.breeder_id); 
     } 
    }); 

:

이 내가 생각이다는 관련 코드입니다.

// breeders_controller.js 
Catapp.BreedersController = Ember.ArrayController.extend({ 
    sortProperties: ['id'] 
}); 

답변

14

당신은 실제로 모델 후크에 인수를 추가해야합니다

Catapp.BreedersShowRoute = Ember.Route.extend({ 
    model: function(params){ 
     return this.store.find('breeder', params.breeder_id); 
    } 
}); 

여기 와서 이것을 실현하는 분들뿐만 아니라

Catapp.BreedersShowRoute = Ember.Route.extend({ 
    model: function(foo){ 
     return this.store.find('breeder', foo.breeder_id); 
    } 
}); 
+0

처럼 당신이 무엇을 호출 할 수 있습니다 그 (것)들을 위해 작동하지 않는다, 당신이 저 모형을위한'색인'노선에 없기 때문에 확률이 높다 :'params'가 작동하는 유일한 장소. 대신 [이 해결책] (http://stackoverflow.com/a/20503866/1450226)을 사용했습니다. –

+0

답변에 추가 정보를 추가하고 싶지만, 귀하가 말하는 내용을 이해할 수 있는지 확실하지 않습니다. 매개 변수는': foo'가 라우터에있는 곳을 기반으로 채워집니다. – Kingpin2k

+0

URL'/ : foo'에 있다면 params에 데이터가 들어 있습니다. 그러나'/ : foo/edit' params와 같이 중첩 된 위치에 아무 것도 포함되지 않습니다. 중첩 된 경로에서': foo' ID에 액세스해야했습니다. –