使用Java Play的AngularJS模板指令

时间:2015-07-01 14:50:50

标签: javascript java angularjs angularjs-directive playframework

我有一个AngularJS应用程序。在该应用程序中,我正在尝试使用自定义指令加载一段HTML。我的指令(在app.js中)如下:

app.directive('mytable', function() {
    return {
        restrict: 'E',
        templateUrl: '/mytable'
    };
});

在我的HTML文件(index.html)中,我只需指定自定义标记。

<mytable></mytable>

mytable.html中的实现细节只是静态HTML。在使用Java Play的路由方面,我有:

GET     /mytable                Application.mytable

在我的Play控制器(Application.java)中,我有:

public static void mytable() { render(); }

然而,当我尝试加载页面时,我得到:

GET http://localhost:9000/mytable 500 (Internal Server Error) 
XHR finished loading: GET "http://localhost:9000/mytable".

经过仔细检查,在控制台内,我看到了:

Template not found 
The template Application/mytable.txt does not exist.

如何修复我的代码?当mytable.txt中的所有其他控制器都相同并正确呈现mytable.html文件时,为什么要尝试呈现Application.java而不是.html

只是旁注:http://localhost:9000/mytable确实正确呈现<mytable>的静态内容。

1 个答案:

答案 0 :(得分:0)

编辑:这仅适用于Play版本2.x

我觉得你的控制器方法有点不对劲。我会改写这个

public static void mytable() { render(); }

为:

public static Result mytable() { 
    ok(index.render()); 
}

index是您的视图,render是您调用此视图的方法,您的控制器会返回Result(通过ok()方法)