只有当我使用Mixin时,Ember才会导致路由问题.我该如何解决此问题
Ember causes a routing issue only when I use a Mixin. How do I resolve this?
在我的Ember CLI应用程序中,我有一个名为insights的路由。该路由扩展了check用户mixin。
/routes/inspections.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('insights')从另一条路由转换到路由时,或者手动将页面刷新到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函数。不知道为什么只有当我使用到helper的链接时它才会在那里中断。我错过了什么?
transitionToRoute
是一个控制器方法。路由上的方法是transitionTo
。
我想你的线路号码可能是因为转译的缘故。您可以从堆栈跟踪中看到,错误是在setupController
内部抛出的。顺便说一句,如果你像setupController: function Insights$setupController() ...
那样定义你的函数,你会得到更好的跟踪。
小问题:首先,我不知道你为什么要费力地定义_this
。第二,不要在setupController
中进行这种检查;CCD_ 7会更好。第三,我不太喜欢冗余=== true
。
查看修复评论从本质上讲,将setupController更改为beforeModel修复了这个错误。
相关文章:
- 无法运行php代码,有角度路由问题
- ember.js:转换到相同的路由会产生堆栈溢出问题
- 控制器操作的路由问题
- 有UI路由问题的角度路由
- 在Node.js中将数据传递到子路由时出现问题
- Angular中的ajax调用和路由问题
- Angular1.3路由的直接URLS问题-即使html5mode为false
- 我在角度指令和角度路由中有一个问题
- 自定义 Mod 文件夹的角度路由问题
- 角度 js 路由提供程序中的问题
- 基于 id 访问 url 时存在角度路由问题
- Router.go 方法使路由页面流星变灰的问题
- Web API 应用程序中 asp.net 路由和路由前缀问题
- 在快递服务器问题中设置“邮政”路由时遇到困难
- 表达 4 + 角度 2 HTML 5 路由问题
- Expressjs 动态路由问题
- ASP.NET MVC 4 路由问题
- 角度JS和动态路由问题
- Slim Framework v3 - PUT 路由的问题
- AngularJS问题:路由后第二页未调用指令