Angularjs 在Play框架中调用Angular js页面

Angularjs 在Play框架中调用Angular js页面,angularjs,playframework,playframework-2.0,Angularjs,Playframework,Playframework 2.0,我在Play framework 2.2中显示AngularJs页面时遇到问题 Angular js页面位于相同的项目目录中,该目录为 C:\webProj\test\app\www\index.html 注意此index.html不是播放视图目录中的index.scala.html 我需要从我的Play项目中呈现此页面。 我试过这个 GET/masterid controller.Assets.at(“/app/www/”,index.html) 但它给出了一个编译错误。错误解释 此路由配置中

我在Play framework 2.2中显示AngularJs页面时遇到问题

Angular js页面位于相同的项目目录中,该目录为

C:\webProj\test\app\www\index.html

注意此index.html不是播放视图目录中的index.scala.html

我需要从我的Play项目中呈现此页面。 我试过这个

GET/masterid controller.Assets.at(“/app/www/”,index.html)

但它给出了一个编译错误。

错误解释 此路由配置中存在一些语法错误:

GET /masterid controller.Assets.at("/app/www/",index.html)
它应该是
控制器
而不是控制器,路径错误,参数指定不正确。它可以写为:

GET /masterid controllers.Assets.at(path="/app/www", file="index.html")
请注意,如前所述,此路由将只映射到
index.html
文件,而不映射到
/masterid
下的任何其他资源

具有单独目录的解决方案 要完全按照要求操作,使用单独的目录和自定义URL,除了默认资源路由之外,还需要指定第二个资源路由。这还需要更改
@routes.Assets.at
的所有用法,以指定两个参数(
文件夹
文件
),并将配置添加到
build.sbt

playAssetsDirectories <+= baseDirectory / "app/www"
为此:

GET     /masterid/*file             controllers.Assets.at(path="/public", file)
在这种情况下,可以通过以下方式访问自定义
index.html
文件:

http://localhost:9000/masterid/index.html
/public
文件夹下其他资源的相对URL也可以使用

使用公共目录和默认URL的解决方案
如果不需要根目录下的
/masterid
URL,可以将
index.html
文件保存在
public/app
下,并将其称为:

@routes.Assets.at("app/index.html")
这将决定:

http://localhost:9000/assets/app/index.html
文档
有关更详细的说明,请参见。

为了加快速度,只需将您的文件放入,即:
/public/angular app/index.html
,这样您就可以通过以下方式使用它:

@routes.Assets.at("angular-app/index.html")
接下来(假设您有标准路由),您可以只使用公共资产的静态路径,即,如果图像放置在文件夹
public/img/logo.png
中,您可以通过以下方式访问它:

<img src="/assets/img/logo.png" alt=""/>


因此,只需将
public/
替换为
/assets/
(开始时用斜杠,以确保不需要在文档头部使用
base
标记)

谢谢你的回答,费尔南多。我尝试了你提到的解决方案。但在这种情况下,如果我们更改了基本目录,那么在Play中设计的其他页面在为另一个Play基本目录编译时开始显示编译错误。我怀疑是否可以设置多个基本目录?没错。我在答复中提到了这一点。如果希望有两个不同的路径,则需要将
playAssetsDirectories
添加到build.sbt,并更改
routes.Assets.at
调用的参数。这就是为什么我建议使用预定义的
public
目录。无论如何,别忘了检查文档。一开始理解起来可能有点复杂,但它解释了所有的可能性。@再次感谢。。是的,这是个问题。我有95%的页面是在游戏中开发的,5%的页面是使用Angularjs专门开发的,所以我想我必须使用下面提到的@biesor解决方案。。是的,你的解决方案也很有效。如果你不需要
masterid
URL,那确实是最简单的解决方案。无论如何,我已经更新了我的答案,以便更好地澄清备选方案,因为这可能会在将来帮助其他人。@Thank Biesior.。我做到了,效果很好。我可以很好地渲染我的页面。但是页面没有加载图像和js脚本。我需要将src=“img/logo.png”更改为src=“@routes.Assets.at(public/img/logo.png)”并将页面从html更改为scala.html吗?
<img src="/assets/img/logo.png" alt=""/>