Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';确定路线的最佳方法是什么;s模板基于AngularJS中的$cookies值?_Javascript_Angularjs - Fatal编程技术网

Javascript 什么';确定路线的最佳方法是什么;s模板基于AngularJS中的$cookies值?

Javascript 什么';确定路线的最佳方法是什么;s模板基于AngularJS中的$cookies值?,javascript,angularjs,Javascript,Angularjs,我希望AngularJS应用程序的根URL,/,显示基于cookie值的模板。例如,当存在登录cookie时,显示仪表板。当缺少登录cookie时,显示登录屏幕 我尝试将$cookies注入app.config,以基于它确定$route的模板属性,但没有成功 var myApp=angular.module('myApp',['ngRoute','ngCookies'); myApp.config([ “$routeProvider”, “$locationProvider”, 函数($rout

我希望AngularJS应用程序的根URL,
/
,显示基于cookie值的模板。例如,当存在登录cookie时,显示仪表板。当缺少登录cookie时,显示登录屏幕

我尝试将$cookies注入
app.config
,以基于它确定
$route
的模板属性,但没有成功

var myApp=angular.module('myApp',['ngRoute','ngCookies');
myApp.config([
“$routeProvider”,
“$locationProvider”,
函数($routeProvider,$locationProvider){
$routeProvider。
当(“/”{
templateUrl:function(){
//在这里读饼干?
返回“../connect.html”;
},
控制器:“getAuthUrl”
});
$locationProvider。
HTML5模式(true)。
hashPrefix(“!”);
}
]);

回答我自己的问题

经过进一步调查,我发现,
$routeProvider
不是我应该使用的<代码>$routeProvider用于基于URL路由提供模板。这个问题需要的是模块,它是一个官方的AngularJS模块

与URL不同,
UIRouter
允许您根据“状态”指定页面内容。在我的情况下,我有一个“loggedin”状态和一个“dashboard”状态。以下是我如何实施解决方案的:

var myApp=angular.module('myApp',['ngCookies','ui.router']);
myApp.config([
“$stateProvider”,
“$locationProvider”,
函数($stateProvider,$locationProvider){
$stateProvider。
状态('登录'{
模板:“立即登录。”
}).state('仪表板'{
模板:“您已登录。欢迎。”
});
$locationProvider。
HTML5模式(true)。
hashPrefix(“!”);
}
]);
myApp.controller('mainCtrl'[
“$scope”,
“$state”,
“$cookies”,
函数($scope、$state、$cookie){
//你可以在这里读饼干
如果(真){
console.log($cookies);
$state.go('dashboard');
}
否则{
$state.go('login');
}
}
]);
然后是HTML


您可以在其


注意:您必须至少使用
ui路由器
v0.0.2。v0.0.1不起作用。

UI路由器太棒了。很高兴你找到了。但是,应该注意,您可以通过将$location服务传递到控制器并使用$location.path(“/mypage”)@jimforcy
$location
来完成完全相同的任务。我想在一个URL下有两个不同的模板。我不想转发到另一个URL,例如
/mypage
。啊,好的,我明白了。是的,那么UI路由器正是您想要的。