我已经为我的角度应用创建了一个指令,在指令中我使用templateUrl来获取模板。
templateUrl: 'templates/searchbox-template.html',
这在我的本地服务器上运行正常,但是当我在firebase上托管它时,它会反复发出此警告 -
WARNING: Tried to load angular more than once
页面也陷入循环,反复将index.html添加到页面。 如果您从我使用该指令的导航栏转到公司或工作选项卡,您可以看到应用here。 我无法弄清楚应该使用什么路径来阻止它。这是应用程序的结构 -
.
├── app
│ ├── 404.html
│ ├── favicon.ico
│ ├── images
│ ├── index.html
│ ├── robots.txt
│ ├── scripts
│ ├── styles
│ ├── templates
│ └── views
├── bower_components
│ ├── angular
│ ├── angular-mocks
│ ├── angular-route
│ ├── animate.css
│ ├── bootstrap
│ ├── jquery
│ └── jssocials
├── bower.json
├── dist
│ ├── 404.html
│ ├── favicon.ico
│ ├── fonts
│ ├── index.html
│ ├── robots.txt
│ ├── scripts
│ └── styles
├── firebase.json
.
├── app
│ ├── 404.html
│ ├── favicon.ico
│ ├── images
│ ├── index.html
│ ├── robots.txt
│ ├── scripts
│ │ ├── app.js
│ │ ├── controllers
│ │ ├── directives
│ │ └── services
│ ├── styles
│ │ └── main.css
│ ├── templates
│ │ └── searchbox-template.html
│ └── views
│ ├── about.html
│ ├── companiesall.html
│ ├── company.html
│ ├── contact.html
│ ├── jobsall.html
│ └── main.html
如您所见,我的模板位于模板文件夹中。请帮我解决一下这个。谢谢。
更新 - 根据这个answer,该指令无法找到模板,因此反复加载index.html -
.otherwise({
redirectTo: '/'
});
我只需要找出模板的正确路径。
这是firebase.json json文件的内容 -
{
"hosting": {
"public": "dist",
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
答案 0 :(得分:2)
'/'
是否映射到视图main.html
?如果是这样,听起来您的服务器仅在views
目录下静态提供文件,并且不允许访问templates
目录。要测试它,请尝试从模板中获取模板并将其放在视图下,然后相应地更改templateUrl
。
正如您所提到的,Angular无法访问/查找目录,因此默认使用otherwise
函数,加载main.html
会一次又一次地重新启动问题。
修改强>
如果其他人遇到此问题,dist
目录是生产版本,并使用$templateCache
从单个文件提供视图,但在将视图合并为一个视图的步骤中文件templates
目录未被考虑,因此无法找到。因此,在Gruntfile.js
中,更改模板的src
以包含其他文件夹,如下所示:
ngtemplates: {
dist: {
options: {
module: 'jobSeekerApp',
htmlmin: '<%= htmlmin.dist.options %>',
usemin: 'scripts/scripts.js'
},
cwd: '<%= yeoman.app %>',
src: ['views/{,*/}*.html', 'templates/{,*/}*.html'],
dest: '.tmp/templateCache.js'
}
},
答案 1 :(得分:0)
不要重定向到索引页面。因为你的应用程序正在index.html上运行
因此,无论何时您将重定向到索引页面,应用程序都将重新开始
而不是使用另一个页面与空白网址并重定向到它
的像强>: -
使用空白网址创建一个js作为 main.js 或 home.js ,例如&#39; /&#39;。
所以每当你重定向到&#39; /&#39;您的应用不会一次又一次地启动。你不会得到任何这样的警告。