我有以下文件以供播放框架和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'
}));
任何其他解決辦法?或許某種相對路徑?