【发布时间】: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