【问题标题】:AngularJS UI Router shows blank page with templateUrlAngularJS UI 路由器显示带有 templateUrl 的空白页面
【发布时间】:2016-05-22 19:16:21
【问题描述】:

我正在尝试将我的应用程序拆分为视图并从 Angular UI 路由器开始。我正在创建多个视图,如果我使用“模板”,它会打印得很好,但是当我将 templateUrl 与外部 .html 文件一起使用时,我只会得到一个空白页。

HTML:

<!DOCTYPE html>
<head>
<meta charset="utf-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.0/angular-ui-router.js"></script>

<script src="searchApp.js"></script>

</head>

<body ng-app="searchApp">
<div ui-view>
</div>
</body>
</html>

searchApp.js:

var searchApp = angular.module('searchApp', ['ui.router'])
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {

  $stateProvider
  .state('index', {
    url: "/",
    views: {
      '': {
        templateUrl: 'testView.html'
      }
    }
  });

  $urlRouterProvider.otherwise('/');
}])

testView.html

This is a test.

这是一个 Plunkr:https://plnkr.co/edit/4xQaHbx71mUNYRbTQntz

编辑: 这似乎在 Plunker 中有效,但在我的计算机上本地无效。在 mac 和 win 上都试过了。

编辑 2: 我所能做的就是 UI Router templateUrl 参数在直接从文件系统运行时不起作用,但可能需要服务器才能打开文件?是这样吗?有什么办法吗?

编辑 3: 解决方案:似乎页面需要通过服务器而不是直接从文件系统运行时使用 templateUrl(或包括任何一般文件),因为它们是通过 Ajax 获取的。所以 - 要使用 templateUrl,您必须在本地机器上安装服务器或继续在服务器上编码。

【问题讨论】:

  • 服务器必须与 ui-router 一起使用,因为模板页面是通过 ajax 获取的。
  • 这就解释了。非常感谢!

标签: angularjs angular-ui-router


【解决方案1】:

这与 UI-router 无关,因为抛出了无法找到 angular 的错误。您在加载 Angular 时使用了错误的 URL。改变

"http://ajax.googleapis.com/ajax/libs/angularjs/...

https://ajax.googleapis.com/ajax/libs/angularjs/...

让事情顺利进行。

https://plnkr.co/edit/rSbD4FBIFsnamiaMQLve?p=preview

【讨论】:

  • 嗯,我可以看到它现在可以在 Plunker 中运行,但这仍然无法在我的计算机上本地运行。我已经在 mac 和 win 上进行了测试,并直接从 Plunker 复制了代码。我整天都在试图找到一些原因......而且,角度本身就可以工作,只是ui路由器模板Url不起作用,如原始帖子中所述。
  • 可能是路径配置错误?
  • 啊,是的……没错,这听起来像是可能导致这种情况的原因。但是如何...除了 state-methods 中给出的配置,ui 路由器还需要什么配置?
  • 作为对上一篇文章的补充 - 我通过单击 mac finder 和 windows 文件资源管理器上的 index.html 直接运行这些文件,因此无需额外的服务器设置。
  • 您确实需要一个服务器来运行它,模板是通过 ajax 调用获取的
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2017-08-29
  • 2018-11-16
  • 1970-01-01
  • 2022-06-25
相关资源
最近更新 更多