javascript - 导航到子状态也会刷新其父状态

标签 javascript angularjs html angularjs-directive angular-ui-router

我将尝试提供一个示例伪代码,以便能够尽可能详细地解释我的问题。我无法将工作代码放在这里,因为那里涉及的层、指令和模板太多。

我的基本结构是:

...
<div>
   <div ui-view>
       <div ui-view></div>
   </div>
</div>
...

当父级 ui-view 中的代码执行 $state.go 更新子级 ui-view 时,父级也被加载再次。

假设父状态称为contact,子状态是details。我的 $state.go 调用是 $state.go("contact.details")$stateProvider 配置如下所示:

$stateProvider.state({ name: "contact" /*,  rest of properties */ });
$stateProvider.state({ name: "contact.details", /*,  rest of properties */ });

此外,整个子 ui-view 发生在一个指令嵌入中。假设它将是:

<div>
   <div ui-view>
       <directive>
           <content>
                <div ui-view></div>
           </content>
       </directive>
   </div>
</div>

根据这些详细信息,您是否发现任何问题?为什么 $state.go("contact.details") 也重新加载 contact? (注意 contact.details 已加载,但重新加载 contact 会产生副作用,因为 Controller 会再次执行...)。

更新

如果我在 contact 的 Controller 上调用 $state.go("details"),它会发生同样的问题,但是一旦它被加载,当我 $state.go 到其他子状态,每个子状态都按预期打开,但再次调用父状态的 Controller

最佳答案

我没有问题,但我和你有不同,我的父状态要么是抽象的,要么重定向到他的 Controller 中的默认子状态。

所以我会

$stateProvider.state({ name: "contact" /*,  rest of properties */ 
      controller:['$state', function($state){
         if($state.current.name=='contact'){
              $state.go('contact.main');
         }
      }]
 });
$stateProvider.state({ name: "contact.main", /*,  rest of properties */ 
$stateProvider.state({ name: "contact.details", /*,  rest of properties */ });

关于javascript - 导航到子状态也会刷新其父状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36691366/

相关文章:

javascript - 有条件地以 Angular 应用一次性绑定(bind)

html - 带有 x 滚动的 CSS 绝对位置

java - jsf 2.0 (myfaces) 中的 ajax 调用,在渲染完成之前调用 ajax 标记中的 onevent Javascript 函数

javascript - jQuery :not (:contains) not working with ACF select field/<select><option> tag/

javascript - AngularJS + Bootstrap : Two col-xs-6 columns will not align

javascript - Angular 中断了 jQuery 幻灯片放映

javascript - jQuery 获取文档中的所有 href url 并 chop 或拆分它们

html - 制作演示网站时,拥有多个 HTML 文件还是只有一个大 HTML 文件效率更高?

javascript - 在 Rails 中,如何将 link_to 与谷歌地图一起使用来创建可点击的链接?

javascript - Webpack 4 无法正确解析 SCSS 中的 url()