当前位置: 首页 > 知识库问答 >
问题:

如何设置Grails和AngularJS部分模板

司空昊阳
2023-03-14

我正在实现一个前端使用AngularJS,后端使用Grails的项目。

  • 角度 JS =

这是我设置项目的方式:

web-app
   |
   |_____ js ( angular controllers, modules, partial templates.)
   |
   |_____ images
   |
   |_____ css


grails-app
   |
   |_____ views ( in here I have my main view, the one I use at the first user request )

与其使用Resources Plugin,我更喜欢使用Grunt构建自己的前端,然后我只链接布局本身内的最终文件。

我在web应用程序中构建了<code>js

这是我用来加载视图的非常标准的角度代码:

angular.module('myapp', []).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when('/invoices', {
        templateUrl: 'partials/invoices-list.html',   
        controller: InvoiceListCtrl
    })
    .when('/invoices/:invoiceId', {
        templateUrl: 'partials/invoice-details.html', 
        controller: InvoiceDetailCtrl}
    )
    .otherwise({redirectTo: '/dashboard'}, {
        templateUrl: 'partials/dashboard.html', 
        controller: DashboardCtrl
    });
}]);

发生的情况是Angular无法获取这些部分模板,因为部分文件夹没有复制到tomcat<code>work

我不知道哪种其他方法可以用于圣杯驱动的项目。

共有3个答案

督瑞
2023-03-14

默认情况下,web应用程序文件夹中的所有文件都复制到war中名为static的文件夹中。(您可以更改此行为。请参阅Grails文档)。

在您的示例中,您可以检查以下网址中的部分文件。

http://localhost:8080/yourApp/static/js/partials/invoices-list.html
http://localhost:8080/yourApp/static/js/partials/invoices-details.html
http://localhost:8080/yourApp/static/js/partials/dashboard.html

因此,您需要做的是找出这些文件的路径。像这样:

angular.module('myapp', []).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when('/invoices', {
        templateUrl: '../static/js/partials/invoices-list.html',   
        controller: InvoiceListCtrl
    })
    .when('/invoices/:invoiceId', {
        templateUrl: '../static/js/partials/invoice-details.html', 
        controller: InvoiceDetailCtrl}
    )
    .otherwise({redirectTo: '/dashboard'}, {
        templateUrl: '../static/js/partials/dashboard.html', 
        controller: DashboardCtrl
    });
}]);

需要注意的是,templateUrl路径不应该与JS文件相关。

另一个例子:

grails-app
    views
        mydomain
            index.gsp
web-app
    js
        partials
            mydomain-detail.html
            mydomain-list.html
        controllers
            mydomain-controllers.js

资源:

http://localhost:8080/myApp/mydomain/  
http://localhost:8080/myApp/static/js/partials/mydomain-detail.html  
http://localhost:8080/myApp/static/js/partials/mydomain-list.html  

路由配置:

angular.module('myapp', []).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when('/list', {
        templateUrl: '../static/js/partials/mydomain-detail.html',   
        controller: MyDomainListCtrl
    })
    .when('/show/:id', {
        templateUrl: '../static/js/partials/mydomain-detail.html', 
        controller: MyDomainDetailCtrl}
    )
    .otherwise({
         redirectTo: '/list'
    });
}]);
管和志
2023-03-14

我通过标准ajax请求提供我的部分/视图。

class ViewController {

  def invoiceList() {
    render(template: 'invoiceList')
  }
  ...
}

$routeProvider
    .when('/invoices', {
        templateUrl: contextPath + '/view/invoiceList',   
        controller: InvoiceListCtrl
    })

上下文路径派生自 ${request.contextPath},我将其存储在主 gsp 中的全局变量中。

耿炎彬
2023-03-14

我认为问题是静态资源不是从默认grails-app目录派生的,因此您需要包含来自文档根目录的完整路径,例如templateUrl:'/部件/invoices-list.html',

这是我的用户界面-router设置:

App.config([
  '$stateProvider'
  '$urlRouterProvider'

  ($stateProvider, $urlRouterProvider) ->

    $urlRouterProvider.otherwise("/")

    $stateProvider
      .state('intro', {
        url: "/",
        templateUrl: '/templates/intro.html'
      })
 类似资料:
  • 问题内容: 我在主布局文件中有这个 我的目录结构中有header.html部分模板。 如何在我的应用程序中包含此模板?我认为angular在处理完控制器后会自动包含模板,但是它不起作用。 标头节点应替换为此文件的内容。 问题答案: 包含来自外部文件的模板/ html片段的一种方法是使用指令(doc)。 要么

  • 我试图实施ProLoser在我的Plunk链接中提供的解决方案。我的问题是,每当我按下链接而不是打开链接下方的子视图时,它就会覆盖整个视图。 我需要明白如何解决这个问题。 我的流程是这样的:- 我的布局: 指数html: 所容纳之物html: 我的代码:

  • 问题内容: 我想用一些动态问题来填充表单(在此处提示): 一切正常,除了模型实际上是Answers [“ {{question.Name}}”],而不是评估后的Answers [“ GenderQuestion”]。如何动态设置型号名称? 问题答案: http://jsfiddle.net/DrQ77/ 您只需将javascript表达式放入中。

  • 我正在使用本指南向使用JMeter:https://www.blazemeter.com/blog/testing-advanced-rest-api-file-uploads-jmeter的服务器发送多部分POST请求 在这个请求中有几个部分,如文件、一些字符串和JSON。 问题是,尽管我在“Content type”字段中指定了边界,但JMeter设置了它想要的任何内容,结果是服务器(Wild

  • 问题内容: 例如,我在中有一个局部,我想在几个地方使用不同的汽车集合来渲染它。也许是这样的: 与常规包含项的主要区别在于,部分显示项不需要了解其要显示的汽车列表的任何信息。给了它一系列汽车,并显示它们。可能像: 问题答案: 该指令在父作用域和子作用域中重命名的“本地”变量之间提供了2路数据绑定。它可以与其他指令结合使用,例如实现出色的模板可重用性。需要AngularJS 1.2.x 标记 这是怎么