角度指令中模板的路径?

时间:2016-09-04 17:10:17

标签: javascript angularjs angularjs-directive

我已经为我的角度应用创建了一个指令,在指令中我使用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"
      }
    ]
  }
}

2 个答案:

答案 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;您的应用不会一次又一次地启动。你不会得到任何这样的警告。