Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 防止angular-ui-router在首页加载时重新加载ui-view大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在第一次点击页面时,我想将完全呈现的页面发送回用户.如果禁用了 javascript,这可以正常工作,但是如果启用了javascript,则angular-ui-router会查找状态并在现有内容之上呈现为ui-view.有没有办法在第一页加载时以某种方式禁用它?

看到这个问题:https://github.com/angular-ui/ui-router/issues/1807建议使用$urlRouterProvider.deferIntercept(),但我找不到很多关于使用它的文档,也不知道如何@L_944_6@第一页加载.

解决方法

有两个部分:首先,您需要禁用路由器在第一页加载时踢入.这可以这样做:

app.config(function($httpProvider,$urlRouterProvider) {
  // On the first page load disable ui-router so that
  // our server rendered page is not reloaded based on the window LOCATIOn.
  $urlRouterProvider.deferIntercept();
});

其次,我们需要正确设置ui-view:在ui-view中转储服务器呈现的标记会导致第一个控制器运行两次时出现奇怪的行为(请参阅https://github.com/angular-ui/ui-router/issues/1807),因此我们将在之后添加服务器呈现的标记ui-view div并隐藏ui-view直到有导航事件.

<div ng-controller="PropertyDetailCtrl">
  <div class="ng-cloak" ng-show="!isFirstPageLoad" ui-view></div>

  <div ng-show="isFirstPageLoad">
    (server rendered markup goes herE)
  </div>
</div>

现在我们需要在$scope中设置isFirstPageLoad:

app.controller('PropertyDetailCtrl',function loader($rootScope,$scopE) {
  $scope.isFirstPageLoad = true;

  $rootScope.$on('$viewContentLoading',function(event,viewConfig) {
    $scope.isFirstPageLoad = false;
  });
});

我们已经使用Ng-cloak确保页面在javascript被禁用时表现完美,所以现在我们有一个完全服务器端渲染的第一页加载,所有后续导航都由ui-router处理.

大佬总结

以上是大佬教程为你收集整理的angularjs – 防止angular-ui-router在首页加载时重新加载ui-view全部内容,希望文章能够帮你解决angularjs – 防止angular-ui-router在首页加载时重新加载ui-view所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。