首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角应用程序不加载初始页面

角应用程序不加载初始页面
EN

Stack Overflow用户
提问于 2013-12-17 09:17:37
回答 4查看 2.2K关注 0票数 0

在我目前正在开发的一个角度应用程序中,第一个页面调用不会导致加载正确的路由模板(只显示菜单栏)。只有当我点击另一个链接,并返回到原来,正确的页面加载。

是否存在任何已知的第一页加载问题,或者如何调试此问题?

一些上下文:我正在使用Angularjs (v1.2.0-rc.2)和requirejs (还有更多,但它们应该是无关的)。我不能提供一个最低限度的工作示例,因为我不知道要删除什么和现在什么。我也有一段时间没有出现这个问题,但是现在(在其他页面上做了更多的开发),这些页面表现出了相同的行为。任何指针都很感激..。

更新

根据请求,给出路由配置的示例。它们看起来都很相似;一些静态部分和一些ids。

代码语言:javascript
运行
复制
mod.config(function ($routeProvider) {
  $routeProvider.when('/some/:id/route/to/somewhere', {
    controller: 'MyController',
    templateUrl: '/template/some.template.html'
  });
});

更新2

在深入研究了角代码之后,我发现在最初处理来自angular.js的这个片段中的一个新URL时,没有向事件$locationChangeSuccess注册处理程序。

代码语言:javascript
运行
复制
// update browser
var changeCounter = 0;
$rootScope.$watch(function $locationWatch() {
  var oldUrl = $browser.url();
  var currentReplace = $location.$$replace;

  if (!changeCounter || oldUrl != $location.absUrl()) {
    changeCounter++;
    $rootScope.$evalAsync(function() {
      if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).
          defaultPrevented) {
        $location.$$parse(oldUrl);
      } else {
        $browser.url($location.absUrl(), currentReplace);
        afterLocationChange(oldUrl);
      }
    });
  }
  $location.$$replace = false;

  return changeCounter;
});

return $location;

function afterLocationChange(oldUrl) {
  $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl);
}

只有在第一个页面加载的处理完成之后,在angular-route.js中,这一行才被执行$rootScope.$on('$locationChangeSuccess', updateRoute); (我相信这会使路由工作并正确地显示视图)。每次URL的变化都很好..。也许这是因为我初始化角度的方式。我用:

代码语言:javascript
运行
复制
angular.element(document).ready(function() {
  angular.bootstrap(document, ['some', 'more', 'modules', 'ngRoute']);
});

我还更新为v1.2.5,但对我的问题没有任何影响。

EN

Stack Overflow用户

发布于 2015-07-24 11:41:46

另一种可能的解决办法

代码语言:javascript
运行
复制
var initApp = function () {
    angular.bootstrap(document.body, ['loginApp']);
    document.body.className += ' ng-app';
}
if ( document.body.className.indexOf('ng-app') == -1 ) {
    initApp();
}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20630179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档