我有如下配置:
... .state('profiles', { abstract: true , url : '/profiles' , resolve: {...} , views: { mainModule: { templateUrl : '/partials/home.html' , controller : 'HomeCtrl' } , leftSidePaneModule: { templateUrl : '/partials/leftSidePane.html' , controller : 'LeftSidePaneCtrl' } } }) ...
玉器主锉
... .col-xs-4.col-md-4.chat_block(ui-view='leftSidePaneModule', autoscroll="false") ...
因此,leftSidePaneModule模块将填充到ui- view='leftSidePaneModule'占位符中。但是问题是,我在leftSidePaneModule模板中还有2个命名视图。leftSidePaneModule模板如下所示:
leftSidePaneModule
ui- view='leftSidePaneModule'
leftSidePaneModule.html
<div> <div ui-view="leftWidgetOne"></div> <div ui-view="leftWidgetTwo"></div> </div>
如何使模块leftWidgetOne和leftWidgetOne在被填充到上述占位?
leftWidgetOne
我试过了,
... .state('profiles', { abstract: true , url : '/profiles' , resolve: {...} , views: { mainModule: { templateUrl : '/partials/home.html' , controller : 'HomeCtrl' } , leftSidePaneModule: { templateUrl : '/partials/leftSidePane.html' , controller : 'LeftSidePaneCtrl' } , 'leftWidgetOne@leftSidePaneModule' : {...} , 'leftWidgetTwo@leftSidePaneModule' : {...} } }) ...
尝试次数:2
... .state('profiles', { abstract: true , url : '/profiles' , resolve: {...} , views: { mainModule: { templateUrl : '/partials/home.html' , controller : 'HomeCtrl' } , leftSidePaneModule: { templateUrl : '/partials/leftSidePane.html' , controller : 'LeftSidePaneCtrl' , views: { 'leftWidgetOne' : {...} , 'leftWidgetTwo' : {...} } } } }) ...
两者都不起作用。
你怎么做呢?
谢谢!
解决方案可在此处找到:视图名称-相对名称与绝对名称。引用:
在幕后,每个视图都被分配一个遵循的方案的绝对名称viewname@statename,其中指令中viewname使用的名称view, 状态名称 是该州的绝对名称,例如contact.item … (注意:在我们的情况下,必须为'profiles')。
viewname@statename
viewname
view
contact.item
'profiles'
关键是,我们可以使用的完整 (绝对) 名称view,它是 当前 状态定义的一部分:
$stateProvider .state('profiles', { url: '/profiles', views: { mainModule: { template: '<div>' + ' <h1>Main</h1>' + ' <div ui-view="leftSidePaneModule"></div>' + '</div>', }, // here we do target the view just added above, as a 'mainModule' // as <div ui-view="leftSidePaneModule"> 'leftSidePaneModule@profiles': { template: '<div>' + ' <div ui-view="leftWidgetOne"></div>' + ' <div ui-view="leftWidgetTwo"></div>' + '</div>', }, // and here we do target the sub view // but still part of the state 'profiles' defined in the above // view defintion 'leftSidePaneModule@profiles' 'leftWidgetOne@profiles': { template: '<h2>One</2>', }, 'leftWidgetTwo@profiles': { template: '<h2>Two</2>', }, } });
还有一个punker显示了上面的代码