Angularjs 如何在父视图中获取$stateparms?
我想用标签内容制作标签。 选项卡内容有自己的视图。 下面是代码示例Angularjs 如何在父视图中获取$stateparms?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我想用标签内容制作标签。 选项卡内容有自己的视图。 下面是代码示例 (function () { angular .module('infirma.konfiguracja', ['ui.router']) .config(routeConfig) ; routeConfig.$inject = ['$stateProvider']; function routeConfig($stateProvider) {
(function () {
angular
.module('infirma.konfiguracja', ['ui.router'])
.config(routeConfig)
;
routeConfig.$inject = ['$stateProvider'];
function routeConfig($stateProvider) {
$stateProvider
.state('app.konfiguracja', {
url: 'konfiguracja/',
views: {
'page@app': {
templateUrl: 'app/konfiguracja/lista.html',
controller: 'konfiguracjaListaCtrl',
controllerAs: 'vm'
}
},
ncyBreadcrumb: {label: "Ustawienia systemu"}
})
.state('app.konfiguracja.dzial', {
url: '{dzial:.*}/',
views: {
'dzial@app.konfiguracja': {
templateUrl: 'app/konfiguracja/dzial.html',
controller: 'konfiguracjaDzialCtrl',
controllerAs: 'vm'
}
},
ncyBreadcrumb: {label: "{{vm.nazwaDzialu}}"}
})
;
}
})();
我想标记处于父状态的所选选项卡(app.konfiguracja
)
问题是,当输入类似于/konfiguracja/firmy/
的url时,app.konfiguracja
控制器中没有$stateParams.dzial
如何修复它?我创建的。我想说,至少有两种方法
第一种通用方法是,如何在父视图中使用UI路由器及其所选参数(标记所选选项卡/链接),应使用指令**UI sref active**
:
ui-sref-active="cssClassToBeUsedForSelected"
所以这可能是用法:
<a ui-sref="app.konfiguracja.dzial({dzial: item.id})"
ui-sref-active="selected"
>{{item.name}}</a>
用法可能是这样的
<span ng-if="item.id == Model.dzial">This is selected</span>
这是选中的
第二种方法是如何工作的?检查文档:
请记住,如果您的状态视图是嵌套的,则范围属性仅继承状态链。范围属性的继承与状态的嵌套无关,而与视图(模板)的嵌套有关
完全可能存在嵌套状态,其模板在站点中的各种非嵌套位置填充ui视图。在这种情况下,您不能期望在子状态的视图中访问父状态视图的范围变量
检查所有正在运行的您可以绑定到父级$scope
中的$stateChangeStart
或$stateChangeSuccess
,以便在路由/状态激活时获取参数。启动控制器KonfiguracjalistCtrl
时它不工作-否$stateChangeStart
事件:/安瑟。我不能使用第二个选项,因为我将隔离作用域与controllerAs
一起使用,但第一个非常有效!如果这有帮助的话,那就太好了;)享受强大的UI路由器
;)
<span ng-if="item.id == Model.dzial">This is selected</span>