ui-router - 如何在刷新时不使用 $stateParams 加载 url?
ui-router - How to load url without $stateParams on refresh?
我过于简化的 app.config() 有:
$stateProvider.
state("/", {
url: "/",
templateUrl: "main.html"
}).
state("/newCategories", {
url: "/categories/new",
templateUrl: "/views/new_categories.html",
controller: "newCategoriesCtrl"
}).
state("/categoryPages", {
url: "/categories/:address",
templateUrl: "/views/categories.html",
controller: "categoriesCtrl",
resolve: {
categoriesDataResolve: function resolveTemplate($stateParams, DataResolver) {
return DataResolver.resolveTemplates($stateParams.address);
}
}
});
有了这个我可以使用 ui-serf link 和 "/newCategories" 加载它的 url: "/categories/new"
<a ui-sref="/newCategories">New Category</a>
但是,当我刷新时,它认为“/new”是 $stateParams 的一部分。因此它使用不同的控制器并尝试解析其模板(缺少模板,因此会出错)。
现在我通过将 url 从“/categories/new”更改为“/categories-new”来修复它,这样刷新时就不会混淆了。 但是我该如何以不同的方式解决这个问题?(也许 ui-router 有一些处理它的方法)
如果我没理解错的话,你想调用不同的控制器a.e。 newCategoriesCtrl
当用户调用 /categories/:address
时 address
参数是 new
把/categories/new
改成"/categories-new
才是正确的解决方法。
小提示:使用/
作为州名前缀不是好的做法。它使开发人员感到困惑,可以与原始 URL.
混合使用
$stateProvider.
//...
state("newCategories", {
url: "/categories-new",
templateUrl: "/views/new_categories.html",
controller: "newCategoriesCtrl"
}).
state("categoryPages", {
url: "/categories/:address",
templateUrl: "/views/categories.html",
controller: "categoriesCtrl",
resolve: {
//...
}
});
我过于简化的 app.config() 有:
$stateProvider.
state("/", {
url: "/",
templateUrl: "main.html"
}).
state("/newCategories", {
url: "/categories/new",
templateUrl: "/views/new_categories.html",
controller: "newCategoriesCtrl"
}).
state("/categoryPages", {
url: "/categories/:address",
templateUrl: "/views/categories.html",
controller: "categoriesCtrl",
resolve: {
categoriesDataResolve: function resolveTemplate($stateParams, DataResolver) {
return DataResolver.resolveTemplates($stateParams.address);
}
}
});
有了这个我可以使用 ui-serf link 和 "/newCategories" 加载它的 url: "/categories/new"
<a ui-sref="/newCategories">New Category</a>
但是,当我刷新时,它认为“/new”是 $stateParams 的一部分。因此它使用不同的控制器并尝试解析其模板(缺少模板,因此会出错)。
现在我通过将 url 从“/categories/new”更改为“/categories-new”来修复它,这样刷新时就不会混淆了。 但是我该如何以不同的方式解决这个问题?(也许 ui-router 有一些处理它的方法)
如果我没理解错的话,你想调用不同的控制器a.e。 newCategoriesCtrl
当用户调用 /categories/:address
时 address
参数是 new
把/categories/new
改成"/categories-new
才是正确的解决方法。
小提示:使用/
作为州名前缀不是好的做法。它使开发人员感到困惑,可以与原始 URL.
$stateProvider.
//...
state("newCategories", {
url: "/categories-new",
templateUrl: "/views/new_categories.html",
controller: "newCategoriesCtrl"
}).
state("categoryPages", {
url: "/categories/:address",
templateUrl: "/views/categories.html",
controller: "categoriesCtrl",
resolve: {
//...
}
});