- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我使用第三方库来处理我的身份验证,并在我的注销函数中调用 $location.url('/login')
。
但是,在我的应用程序模块中,我试图根据当前路由更改一些 CSS。执行此操作的函数如下所示:
app.run(function ($rootScope, $route) {
$rootScope.$on("$routeChangeSuccess", function(currentRoute, previousRoute){
//Change page css, based on Route information
$rootScope.isLogin = {
status: $route.current.$$route.isLogin.status
};
});
});
在我的配置中,我还指定了一些基于 ngRoute 的路由,其中有一个参数告诉我当前页面是否是登录页面。
$routeProvider.
when('/route1', {
templateUrl: './partials/route1.html',
controller: 'Route1Ctrl',
isLogin: { status: false }
}).
when('/login', {
templateUrl: './partials/login.html',
controller: 'AuthCtrl',
isLogin: { status: true }
}).
otherwise({
redirectTo: '/login'
});
现在,每当我调用注销函数时,我都会收到类型错误:Cannot read property 'isLogin' of undefined
,它基本上告诉我 $route.current.$$route .isLogin.status
未设置。考虑到我正在使用事件 $routeChangeSuccess 我不明白为什么它还没有被设置。
有人能看出我哪里做得不对吗?
最佳答案
实际上 'isLogin' of undefined
是说 $$route
是 undefined
。您不应该使用以 $$
开头的属性,因为它们是 Angular 的内部属性。在路由上定义了 isLogout
后,您可以直接通过 $route.current.isLogout
访问它。
JavaScript
angular.module('app',['ngRoute']).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/route1', {
template: '<h1>Template 1</h1>',
isLogin: { status: false }
}).
when('/route2', {
template: '<h1>Template 2</h1>',
isLogin: { status: true }
}).
otherwise({
redirectTo: '/route1'
});
}]).
run(['$rootScope', function($rootScope) {
$rootScope.$on("$routeChangeSuccess", function(event, currentRoute, previousRoute){
if(!currentRoute.redirectTo) { // <= "otherwise" is a route as well, so $routeChangeSuccess is also triggered. However, it does not have `isLogin` property, so filter out this case.
$rootScope.isLogin = {
status: currentRoute.isLogin.status
};
}
});
}]);
笨蛋:http://plnkr.co/edit/R4DSz7kV56zpM9EXpNLm?p=preview
编辑:
$routeChangeSuccess
事件的处理程序接收当前路由作为第二个参数。这意味着您可以像 currentRoute.isLogin
一样直接使用它,而不是将 $route
服务注入(inject)到 run
block 中并像 一样使用它$route.current.isLogin
.
还有一点需要注意的是,$routeProvider
的配置中的otherwise
也是一条路由。因此,如果路由器将新的当前路由解析为 otherwise
,也会触发 $routeChangeSuccess
事件(实际上它会被触发两次:第一次是 otherwise
路由,第二个是它重定向到的路由)。由于 otherwise
路由没有 isLogin
属性,您应该在尝试访问 currentRoute.isLogin
之前过滤掉这种情况。
关于javascript - Angular 表现怪异 $routeChangeSuccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512731/
我不明白为什么有两段代码要做完全相同的事情,却在 Scala 中做不同的事情。 第一个例子: scala> val ggg = Source.fromFile("/somefile"); ggg: s
您认为以下结果如何? SELECT CHARINDEX('space and /* comment */', 'Phrase with space and /* comment */') AS Mat
我正在尝试为单元测试创建带有某些修饰符的 MouseEvent。我使用的是 J2SE,以下代码无法通过: public void testMouseEventProblem() { Mouse
为什么输出0而不是1? System.out.println((int) (Math.ceil(1/2))); 虽然这个正确输出 1 System.out.println((int) (Math.ce
如果我运行这段代码: var a = new Float32Array(3); a[0] = 1; a[1] = 1.1; a[2] = 1.00001; 我得到了a的结果: [1, 1.100000
今天刚开始使用“UIRefreshControl”,发现了一些奇怪的事情。 如果我在 InterfaceBuilder 中创建了 UIRefreshControl,并将其连接起来,我的选择器将永远不会
这是一个非常简单的问题,但是 PHP 文档没有解释为什么会这样。 我有这个代码: var_dump($newattributes); var_dump($oldattributes); var_dum
如果我通常加载一个 UITabBarController 并在 View 之间切换,它会调用每个 View Controller 的 viewWillAppear。但事实并非如此。 我想在触摸另一个标
我有一个关于 setContentOffset 的奇怪问题,我似乎无法解决:我正在尝试构建一个“无尽”的 ScrollView ,所以我想在某个位置重置内容偏移量。使用下面的代码,setContent
这个把我难住了。 我有一个 java.sql.ResultSet,我正在从中提取字符串值,如下所示: address.setAddressLine1(rs.getString("AddressLine
...至少对我来说。这段代码曾经工作得很好。我很确定什么都没有改变,但现在突然间它的行为变得奇怪了。基本上我正在尝试创建内联编辑功能。当用户单击该链接时,它会动态生成一个文本框以及一个确认和取消链接。
我在 ldd 中遇到了以下奇怪的情况 $ sudo ldd ./monit not a dynamic executable $ readelf -d monit Dynamic sectio
我的 app.config 文件发生了一件奇怪的事情。我的 ConnectionStrings 部分包含以下内容: 但是,当我通过 ConfigurationManager.Connecti
CSS 不是我的强项,我不确定我的列表项在 IE6 中发生了什么。我希望它们垂直对齐,但第一个列表项总是被向右推一两个像素,因此它不再与列表中的其他成员对齐。就我而言,此列表在 IE7/8、FF3 和
制作了一个网络作品集。我的名字周围有联系方式。文本的初始宽度为 0,当鼠标悬停时,图标会随着“过渡”属性展开。左边的图标工作正常,但右边的图标过渡很奇怪,尤其是手机。 http://jsfiddle.
发生的事情是我遵循了这个demo ,我修改了它以满足我的需要,让它工作,将其更改为使用函数绘制两个图形,但现在使用 plt.show() 或 plt 根本不起作用。 savefig() 这是我的代码
我正在尝试编写一个从整数中提取最低阶数的函数。例如: > 24689.lowest_order => 9 到目前为止我有: class Integer def lowest_order I
不确定这是包中的错误还是由于其他原因,但我们开始吧。 我正在使用以下包在相似性分数的对称矩阵(大小为 10x10)上查找最大特征值及其对应的特征向量: scipy.sparse.linalg.eige
我正在尝试实现一个名为“inet_pton”的函数,它将 IPv4 或 IPv6 的字符串表示形式(如“66.102.1.147”[google])转换为二进制网络字节有序形式。这是我的代码的相关部分
比较 float 。根据第一个代码块,5 大于 37.66。第二个 block 声称 5 小于 37.66。 toFixed() 对这些使第一个 block 按照它的方式使用react的是什么? (这
我是一名优秀的程序员,十分优秀!