Angularjs 是否可以替换/覆盖ui路由器状态定义?(默认状态为另一个模块“自定义”)
有没有可能简单地用一个新的定义替换一个州的定义 我的用例是一个模块定义状态,我希望能够从另一个模块替换该状态定义。基本上,初始定义是一个“默认”定义,我希望能够从不同的模块自定义状态 我意识到在配置时这样做可能会导致模块首先定义它的竞争条件。我研究了在运行时执行此操作的可能性,但无法使其正常工作 我可以通过创建全新的状态来完成我想要的,但是我希望使用原始状态中的相同URL 编辑:Angularjs 是否可以替换/覆盖ui路由器状态定义?(默认状态为另一个模块“自定义”),angularjs,angular-ui-router,Angularjs,Angular Ui Router,有没有可能简单地用一个新的定义替换一个州的定义 我的用例是一个模块定义状态,我希望能够从另一个模块替换该状态定义。基本上,初始定义是一个“默认”定义,我希望能够从不同的模块自定义状态 我意识到在配置时这样做可能会导致模块首先定义它的竞争条件。我研究了在运行时执行此操作的可能性,但无法使其正常工作 我可以通过创建全新的状态来完成我想要的,但是我希望使用原始状态中的相同URL 编辑: angular.module('module1', ['ui.router']) .config(['$stateP
angular.module('module1', ['ui.router'])
.config(['$stateProvider', function($stateProvider){
$stateProvider
.state('root', {
url: '',
abstract: true,
template: '<div class="layout sub" ui-view="sub"></div>'
})
.state('root.sub1', {
url: '/sub1',
views: {
}
});
}]);
angular.module('module2', ['ui.router'])
.run(['$state', function($state){
var state = $state.get('root.sub1');
if(state && state.views){
state.views['sub@root'] = { template: '<p>Customized sub state 1</p>' };
}
}]);
为了进一步阐明我正在努力实现的目标。。。
请考虑以下代码:
angular.module('module1', ['ui.router'])
.config(['$stateProvider', function($stateProvider){
$stateProvider
.state('root', {
url: '',
abstract: true,
template: '<div class="layout sub" ui-view="sub"></div>'
})
.state('root.sub1', {
url: '/sub1',
views: {
'sub@root': {
template: '<p>Default sub state 1</p>'
}
}
});
}]);
angular.module('module2', ['ui.router'])
.config(['$stateProvider', function($stateProvider){
$stateProvider
.state('root.sub1', {
url: '/sub2',
views: {
'sub@root': {
template: '<p>Customized sub state 1</p>'
}
}
});
}]);
angular.module('module1',['ui.router']))
.config(['$stateProvider',函数($stateProvider){
$stateProvider
.state('根'{
url:“”,
摘要:没错,
模板:“”
})
.state('root.sub1'{
url:“/sub1”,
观点:{
'sub@root': {
模板:“默认子状态1”
}
}
});
}]);
角度.module('module2',['ui.router']))
.config(['$stateProvider',函数($stateProvider){
$stateProvider
.state('root.sub1'{
url:“/sub2”,
观点:{
'sub@root': {
模板:“自定义子状态1”
}
}
});
}]);
这当然会给出“错误:状态‘root.sub1’已定义”我发现解决此问题的最佳方法是:
很抱歉设置格式,我是移动的:)好的,所以当我准备下一步尝试的plnkr演示时,我发现如果使用$state.get并更新它,它实际上是有效的
angular.module('module2', ['ui.router'])
.run(['$state', function($state){
var state = $state.get('root.sub1');
if(state && state.views && state.views['sub@root']){
state.views['sub@root'].template = '<p>Customized sub state 1</p>';
}
}]);
angular.module('module2',['ui.router']))
.run(['$state',函数($state){
var state=$state.get('root.sub1');
if(state&&state.views&&state.views['sub@root']){
陈述意见sub@root'].template='自定义子状态1';
}
}]);
Plnkr:
编辑:
angular.module('module1', ['ui.router'])
.config(['$stateProvider', function($stateProvider){
$stateProvider
.state('root', {
url: '',
abstract: true,
template: '<div class="layout sub" ui-view="sub"></div>'
})
.state('root.sub1', {
url: '/sub1',
views: {
}
});
}]);
angular.module('module2', ['ui.router'])
.run(['$state', function($state){
var state = $state.get('root.sub1');
if(state && state.views){
state.views['sub@root'] = { template: '<p>Customized sub state 1</p>' };
}
}]);
我发现它在我的应用程序中不起作用,因为我没有定义要在原始状态下覆盖的视图
示例(不起作用):
angular.module('module1', ['ui.router'])
.config(['$stateProvider', function($stateProvider){
$stateProvider
.state('root', {
url: '',
abstract: true,
template: '<div class="layout sub" ui-view="sub"></div>'
})
.state('root.sub1', {
url: '/sub1',
views: {
}
});
}]);
angular.module('module2', ['ui.router'])
.run(['$state', function($state){
var state = $state.get('root.sub1');
if(state && state.views){
state.views['sub@root'] = { template: '<p>Customized sub state 1</p>' };
}
}]);
angular.module('module1',['ui.router']))
.config(['$stateProvider',函数($stateProvider){
$stateProvider
.state('根'{
url:“”,
摘要:没错,
模板:“”
})
.state('root.sub1'{
url:“/sub1”,
观点:{
}
});
}]);
角度.module('module2',['ui.router']))
.run(['$state',函数($state){
var state=$state.get('root.sub1');
if(state&&state.views){
陈述意见sub@root']={模板:'自定义子状态1'};
}
}]);
似乎无法为检查您可能可以通过使用抽象父状态来获取。在这种情况下,您可以使用相同的URL。您是否可以详细说明您正试图执行的操作?因此,现在我想知道是否有一种方法可以使此工作正常,以便通过$state.get添加新的视图定义将生效。。。