【发布时间】:2015-12-01 11:30:03
【问题描述】:
我正在使用角度 ui 路由在视图中加载模板。每个模板都有自己的特定于该页面的 javascript 代码。有没有办法在打开模板的那一刻加载模板特定的 javascript 代码/文件?目前,我必须为主页中的每个模板添加所有 javascript 代码/文件。
另一种解决方案是使用 iframe。这允许页面加载它自己的 javascript 文件。但是这种方式导航效果不佳(刷新时页面会重置)。
例子:
index.html
<!DOCTYPE html>
<html ng-app="testApp">
<head>
<title></title>
<meta charset="utf-8" />
<script src="angular.min.js"></script>
<script src="angular-ui-router.min.js"></script>
<script src="app.js"></script>
<script src="template1Functions.js"></script>
<script src="template2Functions.js"></script>
</head>
<body>
<a ui-sref="template1">Template 1</a>
<a ui-sref="template2">Template 2</a>
<div ui-view></div>
</body>
</html>
模板1.html
<button onclick='template1TestFunction()'>Template 1 Function</button>
template2.html
<button onclick='template2TestFunction()'>Template 2 Function</button>
app.js
angular.module('testApp', ['ui.router'])
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('template1', {
url: '/template1',
templateUrl: 'template1.html'
})
.state('template2', {
url: '/template2',
templateUrl: 'template2.html'
});
}]);
template1Functions.js
function template1TestFunction() {
alert('Template 1 works')
};
template2Functions.js
function template2TestFunction() {
alert('Template 2 works')
};
如您所见,我必须在 index.html 页面中添加 template[x]functions.js 文件。我真的很想从 template[x].html 文件中加载它。
【问题讨论】:
-
您是否尝试过将 .js 文件包含在模板中而不是 index.html 中?
-
是的,这也是我的第一个猜测。但如果我这样做,它似乎不会加载文件并且我收到错误“错误:'template1TestFunction'未定义”
标签: angularjs iframe angular-ui-router