【发布时间】:2014-09-26 17:28:46
【问题描述】:
我有一个包含四个区域的单页 AngularJS 应用程序,每个区域都有自己的内容:
我需要每个区域通过服务进行通信,但除此之外,它们需要有自己独立的路由以用于查看目的,即它们都应该有自己的视图状态。
我已尝试使用angular-ui-router 执行此操作 (plunkr),但我无法弄清楚如何创建仅影响特定模块或区域的 angular-ui 状态,而不修改页面。
页面包含区域:
<body>
<a ui-sref="initial1">Initial Region 1</a><br/>
<a ui-sref="initial2">Initial Region 2</a>
<div ui-view="region1" class="region1"></div>
<div ui-view="region2" class="region2"></div>
</body>
应用尝试在独立模块中定义每个区域:
var app = angular.module('Main', ['ui.router', 'Region1', 'Region2']);
var region1App = angular.module('Region1', []);
region1App.config(function($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('initial1', {
url: '/',
views: {
'region1@': {
template: 'Initial Region 1 State, go to <a ui-sref="second1">Second State</a>'
}
}
})
.state('second1', {
url: '/',
views: {
'region1@': {
template: 'Second Region 1 State, go to <a ui-sref="initial1">Initial State</a>'
}
}
});
});
var region2App = angular.module('Region2', []);
region2App.config(function($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('initial2', {
url: '/',
views: {
'region2@': {
template: 'Initial Region 2 State, go to <a ui-sref="second2">Second State</a>'
}
}
})
.state('second2', {
url: '/',
views: {
'region2@': {
template: 'Second Region 2 State, go to <a ui-sref="initial2">Initial State</a>'
}
}
});
});
每个模块都应该有自己的“初始”状态和“第二”状态,并且两者都应该同时显示在屏幕上,改变一个状态不应该影响另一个。如果使用 angular-ui-router 无法做到这一点,那么使用 Angular 做到这一点的最佳方法是什么?
【问题讨论】:
标签: javascript angularjs angular-ui-router