我有一个应用程序,模块查看URL。如果URL有“文档”部分之后的任何内容,则使用该URL之外的信息设置一个状态。如果URL没有超出这一点,则设置另一个状态。所以,这两个网址...Angularjs UI路由器子模块和URL
www.xyz.com/Document/
和
www.xyz.com/Document/someData
我目前解决如下问题。这有效,但我真的需要两个国家在同一个模块,我不知道如何做到这一点。
所以,而不是应用于app.documentEmpty的第二个状态,我希望它适用于app.document.empty。
angular
.module('app.document', [
'app.document.worksheet',
'app.document.tableOfContents',
'app.document.properties',
'app.document.bibliography',
'app.document.inputs',
'app.document.datasets',
'app.document.fileAsFunction',
'app.document.importedFunctions',
'app.document.directory'
])
.config(config);
/** @ngInject */
function config($stateProvider, $translatePartialLoaderProvider, msApiProvider, msNavigationServiceProvider)
{
$stateProvider.state('app.document', {
url : '/Document/{path:.*}/',
views : {
'[email protected]': {
templateUrl: 'app/main/apps/document/worksheet/worksheet.html',
controller : 'DocumentController as vm'
}
},
resolve : {
Documents: function (msApi)
{
return msApi.resolve('[email protected]');
},
emptyDocuments: function (msApi)
{
return msApi.resolve('[email protected]');
}
},
bodyClass: 'worksheet'
}).state('app.documentEmpty', {
url : '/Document/',
views : {
'[email protected]': {
templateUrl: 'app/main/apps/document/documentEmpty.html',
controller : 'DocumentController as vm'
}
},
resolve : {
Documents: function (msApi)
{
return msApi.resolve('[email protected]');
},
emptyDocuments: function (msApi)
{
return msApi.resolve('[email protected]');
}
},
bodyClass: 'document'
});
的问题是,每当我从上面取下第二状态,并与东西像什么目录中的子模块的下面替换它,该URL无法识别,不加载正确的页面。还有其他几个不依赖于URL的子模块,它们工作正常。
$stateProvider.state('app.document.directory', {
url : '/Document/',
views : {
'[email protected]': {
templateUrl: 'app/main/apps/document/directory/directory.html',
controller : 'DocumentController as vm'
}
},
bodyClass: 'directory'
});
是否无法通过URL路由到子模块?
他们应该。不知道出了什么问题,但是你完全可以在子模块中定义你的状态。唯一的问题是要确保你的状态层次定义良好,你的父母没有被破坏。日志中的任何错误? – CozyAzure
我试着在子模块和父类中定义状态。没有错误,当子模块被定义为没有任何东西的URL时,它就不起作用。 –
我想我已经设法弄清楚你的问题了。让我在 – CozyAzure