gpt4 book ai didi

angularjs - 是否可以替换/覆盖 ui-router 状态定义? (默认状态是另一个模块的 "customized")

转载 作者:行者123 更新时间:2023-12-04 23:19:10 24 4
gpt4 key购买 nike

是否可以简单地用新的状态定义替换状态定义?

我的用例是一个模块定义了状态,我希望能够从另一个模块替换该状态定义。基本上,初始定义是“默认”定义,我希望能够从不同的模块自定义状态。

我意识到在配置时这样做可能会导致模块首先定义它的竞争条件。我研究了在运行时执行此操作的可能性,但无法使其正常工作。

我可以通过创建全新的状态来完成我想要的,但我想使用与原始状态相同的 URL。

编辑:

为了进一步澄清我想要完成的事情......
请考虑以下代码:

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>'
}
}
});
}]);

这当然给出“错误:状态'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>';
}
}]);

公众号: http://plnkr.co/edit/xLdCgjeM33z2Hf5CHfZR

编辑:

我发现它在我的应用程序中不起作用,因为我没有定义要在原始状态下覆盖的 View 。

示例(不起作用):
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>' };
}
}]);

关于angularjs - 是否可以替换/覆盖 ui-router 状态定义? (默认状态是另一个模块的 "customized"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32234931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com