2014-12-17 7 views
0

root 'lib'폴더에있는 app.js에 Iron 라우터가 선언되었습니다.Meteor : Router.route() 내부의 Session.set이 '클라이언트'페이지에서 사용될 때 정의되지 않았습니다.

console.log(Session.get("editTikiID")) 
// undefined 

그러나, 그것은 정의되지 않은 이유를 이해하지 않습니다

Router.route('/editTiki/:_id', function() { 

     var params = this.params 
     var id = params._id 

     Session.set("editTikiID", id) 

     this.render("editTikiRoute") 

    }, {name:"editTikiRoute"}); 

는 다음, '클라이언트'폴더 안에 editTiki.js, 내부, 나는이 코드가 있습니다.

+0

예방 차원에서, 당신은 당신의 경로에서'console.log'를 수행하여 그 id가 정의되어 있는지 확인할 수 있습니까? 또한, 코드에서';'을 좀 더 필요로하지 않습니까? –

+0

Session in Meteor은 Java와 같은 세션이 아닙니다. 하나는 쿠키 기반이 아니며 블로그 및 문서에 명시되어 있습니다. 결과적으로 나는 세션 변수가 작동해야한다고 생각하는 방식으로 항상 행동하지는 않는다는 것을 내 자신의 코드에서 알게되었습니다. 나는 이것이 100 % 확실한 것이 아니기 때문에 대답이 아닌 논평으로이 일을하고있다. 그러나 이것이 어떻게 작동 하는지를 보지 못하고있다. – CodeChimp

+0

나는 내 길에서 console.log를했는데 올바른 값을 얻었다. – kevinius

답변

1

그냥 여기처럼 라우터에 가입 ... 당신의 통찰력을위한

Meteor.subscribe("tikiDBEdit", Session.get("editTikiID")) 

들으 : https://github.com/EventedMind/iron-router/blob/devel/Guide.md#wait-and-ready
또는 기다리지 않으려면 더 간단한을 나는 그것이 올바른 기사를 신청해야 가입이 준비가 될 때까지 : 경로가 실행될 때까지

Meteor.subscribe("tikiDBEdit", id); 

세션 변수가 정의되지 않습니다. edittiki.js 파일에서 함수에없는 코드 (예 : console.log와 같은)는 세션 변수가 라우터에 설정되기 전에 실행됩니다. 그게 바로 자바 스크립트가 작동하는 방법.
세션 변수는 템플릿 도우미, 템플릿의 이벤트 및 렌더링 된 함수에서 정의되어야 함을 의미합니다.