【发布时间】:2015-10-26 22:53:41
【问题描述】:
我设置了父/子路由,当我使用 state.go() 更改代码中的状态时,一切正常。当我尝试仅使用 URL 直接转到子路由时,就会出现问题。当我这样做时,控制器会被初始化多次。
这是我的 app.js
$stateProvider
.state('home', {
url: "/",
templateUrl: "Views/home.html",
controller: 'HomeController',
controllerAs: 'vm'
})
.state('ticketsMaster', {
abstract: true,
templateUrl: "Views/tickets-master.html",
url: "^/performances?featureCode&theatreId",
controller: 'TicketsMasterController',
controllerAs: 'vm'
})
.state('ticketsMaster.performances', {
url: "^/performances?featureCode&theatreId",
templateUrl: "Views/performances.html",
controller: 'PerformancesController',
controllerAs: 'vm'
})
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
home.html 是我的母版页,其中有我的 ui-view
我的 ticket-master.html 上还有另一个 ui-view,它会加载我的子视图(表演)。
当直接访问/performances?featureCode=1111&theatreId=1 时,它会加载我的TicketsMasterController 和 Performances 控制器 2 或 3 次。
任何帮助将不胜感激。
【问题讨论】:
-
在两种不同的状态下将它们路由到
"^/performances?featureCode&theatreId",有什么意义? -
这是一个真正的问题,您是否必须在每个州声明一个 url 才能加载模板?
-
这是一个很好的问题——我之所以把它放在那里是因为我只能从ticketsMaster状态中得到它。如果我只把它放在ticketsMaster.performances 状态,我根本看不到它们。我完全摆脱了master上的url,我仍然有同样的问题。
标签: javascript angularjs angular-ui-router url-routing