假设我有以下简单的控制器:
module App {
"use strict";
export class StoreDetailController {
constructor() {
alert("Detail-Controller");
}
}
}
的UI-Router
被配置如下(简化):
var app = angular.module("app", ["ui.router"])
.config(($stateProvider, $locationProvider, $urlRouterProvider) => {
$urlRouterProvider.otherwise("/");
$stateProvider.state("store", {
url: "/Store",
templateUrl: "/Store/Partial?name=Layout"
});
$stateProvider.state("store.Detail", {
url: "/Details/:id",
templateUrl: "/Store/Partial?name=Details",
controller: StoreDetailController
});
$locationProvider.html5Mode(true);
});
当我从应用的开始页面中输入详细信息页面一切正常(出现消息框)。 但是,如果我重新加载详细信息页面上的浏览器或粘贴嵌套链接到一个新的选项卡,控制器没有被调用,并不会引发错误。
一切似乎如果我在配置直接“声明”控制,就像工作过:
//...
$stateProvider.state("store.Detail", {
url: "/Details/:id",
templateUrl: "/Store/Partial?name=Details",
controller: () => alert("This is called every time");
});
//...
什么是配置控制器上的重载或进入嵌套的URL中使用的状态提供了正确的方法是什么?