我有以下文件以供播放框架和AngularJs应用程序:Play Framework:如何在资产文件中使用反向路线?
app/views/index.scala.html
app/assets/app/app.js
app/assets/app/app.scss
app/assets/app/main/_main.scss
app/assets/app/main/main.controller.js
app/assets/app/main/main.html
app/assets/app/main/main.js
app/assets/components/navbar/navbar.controller.js
app/assets/components/navbar/navbar.directive.js
app/assets/components/navbar/navbar.html
的scss
文件在app/assets
,使sbt-sassify
插件他们编译为css
。和其他视图(js
和html
文件)也在app/assets
,但我可以将它们移动到公共位置。
的conf/routes
包含:
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
的navbar.directive.js
如下:
angular.module('quotesApp')
.directive('navbar',() => ({
templateUrl: 'components/navbar/navbar.html',
restrict: 'E',
controller: 'NavbarController',
controllerAs: 'nav'
}));
这是行不通的,因为templateUrl components/navbar/navbar.html
路径需要通过/assets/
前缀,如conf/routes
定义文件。
那么,解决这个问题的正确形式是什么?
我应该在文件navbar.directive.js
中对前缀/assets
进行硬编码,如下所示?但是,在更改路线定义时,这会被打破。
angular.module('quotesApp')
.directive('navbar',() => ({
templateUrl: '/assets/components/navbar/navbar.html',
restrict: 'E',
controller: 'NavbarController',
controllerAs: 'nav'
}));
我应该创建一个视图app/views/components/navbar/navbar.directive.scala.js
(但这仅适用于使用routes
功能是很多样板):
@()
angular.module('quotesApp')
.directive('navbar',() => ({
templateUrl: @routes.Assets.versioned("components/navbar/navbar.html"),
restrict: 'E',
controller: 'NavbarController',
controllerAs: 'nav'
}));
任何其他解决办法?或许某种相对路径?