Ember CLI 응용 프로그램에서 통찰력이있는 경로가입니다. 이 경로는 확인 사용자 mixin을 확장합니다.Ember는 Mixin을 사용할 때만 라우팅 문제를 발생시킵니다. 어떻게 해결할 수 있습니까?
/routes/insights.js :
import Ember from 'ember';
import CheckUser from 'client-web/mixins/check-user';
export default Ember.Route.extend(CheckUser, {
setupController: function(controller, model) {
var _this = this;
if (this.get('userAuthenticated') === true) {
// Do some stuff here
} else {
_this.transitionToRoute('sign-in');
}
},
getToday: function() {
var today = new Date(),
dd = today.getDate(),
mm = today.getMonth() + 1,
yyyy = today.getFullYear();
if (dd < 10) dd = '0' + dd;
if (mm < 10) mm = '0' + mm;
today = mm + '/' + dd + '/' + yyyy;
return today;
},
getTomorrow: function() {
var toDate = new Date(this.getToday());
toDate.setDate(toDate.getDate() + 1);
var day = toDate.getDate(),
month = toDate.getMonth() + 1,
year = toDate.getFullYear();
if (day < 10) day = '0' + day;
if (month < 10) month = '0' + month;
var tomorrow = month + '/' + day + '/' + year;
return tomorrow;
}
});
내가 this.transitionTo를 사용하여 다른 경로에서 경로로 전환 ('통찰력') 또는 수동으로 myapplication.com/insights에 페이지를 새로 고침 할 때, 모든 것이 잘 작동하고이 경로는 내가 지정한 템플릿을 렌더링합니다. 그러나 통찰력 경로에 연결하는 데 {{link-to}} 도우미를 사용하는 일부 링크가 템플릿에 있습니다. 사용자가 해당 링크 중 하나를 클릭하면, 다음과 같은 오류가 발생합니다 :
Error while processing route: insights undefined is not a function TypeError: undefined is not a function
at __exports__.default.Ember.Route.extend.setupController (client-web/routes/insights.js:15:14)
at apply (http://localhost:3000/assets/vendor.js:21144:27)
at superWrapper [as setupController] (http://localhost:3000/assets/vendor.js:20721:15)
at EmberObject.extend.setup (http://localhost:3000/assets/vendor.js:51254:18)
at handlerEnteredOrUpdated (http://localhost:3000/assets/vendor.js:54266:36)
at http://localhost:3000/assets/vendor.js:54235:18
at forEach (http://localhost:3000/assets/vendor.js:55303:54)
at setupContexts (http://localhost:3000/assets/vendor.js:54234:9)
at finalizeTransition (http://localhost:3000/assets/vendor.js:54404:9)
at http://localhost:3000/assets/vendor.js:53954:20
문제의 라인 (15)이 getToday 기능입니다. 헬퍼에 링크를 사용할 때만 왜 그곳에 침입했는지 확신 할 수 없습니다. 내가 뭘 놓치고 있니?
나는 '여기에 물건을 좀해라.'라고 쓰여있는 if 문에 몇 가지 내용을 처리하도록 선언합니다. _이 것은 jQuery 때문에 필요합니다. 전환을 변경했습니다. 고마워. – Nag
@ Nagarjun이 문제를 해결 했습니까? –
setupController를 beforeModel로 변경하면 해당 버그가 수정 된 것으로 보이지만 다른 버그가 추가되었습니다. 이제는 내 스크립트가 this.get ('userAuthenticated') 값이 false로 표시되어 로그인 경로를 렌더링하고 있습니다. userAuthenticated가 Mixin check-user 내부의 속성이라는 것을 기억하십시오. userAuthenticated의 값은 해당 믹스 인을 사용하는 다른 페이지에서 true로 설정됩니다. 다른 사람이 링크 - 도우미를 사용할 때 속성 값을 mixin하지 마십시오. – Nag