我是AngularJS的新手,我对如何在以下场景中使用angular-"ui-router"感到困惑:
我正在构建一个包含两个部分的Web应用程序.第一部分是主页及其登录和注册视图,第二部分是仪表板(成功登录后).
我已经index.html为home部分创建了一个带有角度app和ui-router配置来处理/login和/signup查看的部分,并且dashboard.html仪表板部分还有另一个文件,其app和ui-routerconfig用于处理许多子视图.
现在我完成了仪表板部分,并且不知道如何将这两个部分与不同的角度应用程序结合起来.我怎么能告诉家庭应用程序重定向到仪表板应用程序?
我这里有一个棘手的情况.我的父状态和子状态都覆盖了顶层的相同ui视图(index.html).所以当它从父级进入子状态时,范围会被破坏(我认为?)基本上父级有一个存储在MetricData属性中的解析,我似乎无法从子级访问它,因为它没有嵌套我假设.有没有办法在子节点中获取该metricdata属性,而无需在子节点中再次手动调用相同的ajax调用
父母国家
.state("home.metric", {
url: "/category/:categoryId/metric/:metricId/name/:metricName",
views: {
'main@': {
templateUrl:
function (stateParams){
//move this to a util function later
var tempName = unescape(stateParams.metricName);
tempName = tempName.replace(/\s/g, "-");
return '../partials/slides/' + tempName + '.html';
},
resolve: {
MetricData: ['MetricService', '$stateParams',
function(MetricService, $stateParams){
var data = { categoryId : $stateParams.categoryId, metricId : $stateParams.metricId};
return MetricService.getMetricDetails(data);
}]
},
controllerProvider:
function ($stateParams) {
var tempName = unescape($stateParams.metricName);
tempName = tempName.replace(/\s+/g, '');
return tempName + 'Ctrl';
}
}
}
})
Run Code Online (Sandbox Code Playgroud)
孩子的状态
.state("home.metric.detail", {
url: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AngularUI路由器进行一些身份验证.$urlRouter.sync()看起来正是我需要的.但是,这只有在我拦截时才可用$locationChangeSuccess.但是当我这样做时,它$state.current.name是空的,而我希望它是当前的状态.
到目前为止,这是我的代码:
$rootScope.$on('$locationChangeSuccess', function(event, next, nextParams) {
event.preventDefault();
if ($state.current.name === 'login') {
return userService.isAuthenticated().then(function(response) {
var authenticated;
authenticated = response.authenticated;
return alert(authenticated);
});
}
});
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的指示?
我有以下场景:
问题是:当我解析父节点时子节点没有解析时,当我删除父节点时,子节点会解析.
你能帮帮我吗,让我知道我做错了什么?
app.js
$stateProvider
.state('layout', {
url: "",
templateUrl: 'partials/layout.html',
controller:'LayoutController',
abstract:true,
resolve : {
result_data: function ($q,CommonService)
{
return resolve_layout($q,CommonService)
}
}
})
.state('homepage', {
url: "/homepage",
templateUrl: 'partials/homepage.html',
parent: 'layout',
controller:'HomepageController',
resolve : {
result_data: function ($q,CommonService)
{
return resolve_homepage($q,CommonService)
}
}
})
Run Code Online (Sandbox Code Playgroud)