我应该如何在 Angular ui 路由器中创建模板网址属性的路径

how should I create the path of templateUrl property in Angular ui-router?

本文关键字:建模 属性 路径 创建 Angular 路由器 ui 我应该      更新时间:2023-09-26

请帮忙!

我试图弄清楚为什么 chrome 控制台返回我找不到我的"家.html"模板GET http://localhost:3000/home.html 404 (Not Found)。恐怕我没有设置正确的"模板URL"属性的路径。

这是我的文件夹结构:

app.js
bin/
node_modules/
package.json
public/
---------javascript/
-------------------angularApp.js
routes/
views/
----------index.ejs
----------home.html

这是我的配置代码(位于角度应用程序.js)

angular.module('supervisor', ['ui.router'])
.config([
    '$stateProvider',
    '$urlRouterProvider',
    function ($stateProvider, $urlRouterProvider) {
        $stateProvider
            .state('home', {
                url: '/home',
                templateUrl: '/home".html',
                controller: 'MainCtrl'
            });
        $urlRouterProvider.otherwise('/home');
    }
])

我还尝试了不同的路径,例如"../../家.html"但没有成功。如果我使用内联模板,它正在工作(<script type="text/ng-template" id="/home.html">Hello!</script>)。

谢谢!

您似乎正在使用 express 来为您的应用程序提供服务。Express 是一个服务器端框架,而 angular 是一个客户端框架。您不应该混合使用 2 个代码库。您在 angular 中使用的所有内容都应作为静态资源提供。您很可能将公用文件夹作为静态路由提供。所以很可能你需要像这样修改你的结构(我将如何构建它):

public
--app
----scripts
------angularApp.js
----views
------home.html

然后,您的模板网址应该'/app/views/home.html'

默认情况下,MVC 保护视图文件夹。

使用角度路由时,将 HTMLHandler 行添加到 views''web.config 中,并且您希望模板位于 views 文件夹中:

 <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="HTMLHandler" path="*.html" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>

另请参阅此链接,了解有关视图处理程序的详细信息。