播放2.3 / Angular JS $资源/路由问题

时间:2014-11-13 21:46:34

标签: angularjs playframework routes playframework-2.0 angularjs-routing

所以我尝试将AJAX从我的结果列表中的单个solr文档转换为" doc视图"视图。我试图将AngularJS用于AJAX到我的视图渲染方法并以这种方式显示文档,但我似乎无法使角度工作,我不确定我是不是在Play方面正确地做事。你至少愿意告诉我,我尝试做的事情是否有效? Angular错误来自docText.text();呼叫。这是我的代码:

角度控制器代码:

    var docText = $resource("http://localhost:9000/views/full-doc-text.html", {
        text: {method: 'PUT'}
    });

    $scope.handleViewText = function(value) {
        docText.text({doc: value});
    }

Java代码:

    public static Result viewText() {
        JsonNode json = request().body().asJson();

        //do stuff here

        return ok(viewtext.render(json));
    }

路线:

    GET     /views/full-doc-text.html            controllers.Application.viewText()

1 个答案:

答案 0 :(得分:1)

我看到上面代码有三个问题;

1. docText资源的定义不正确。如果您阅读angularjs手册here,您会看到$resource有4个参数。第一个是资源网址,第二个是参数默认值,第三个是自定义操作,第一个是资源选项,其中最后三个是可选的。在您的代码中,您将自定义操作作为第二个参数传递,该参数应该是第三个参数。由于您的资源url中没有任何参数,因此第二个参数必须为null。所以首先纠正是:

var docText = $resource("http://localhost:9000/views/full-doc-text.html", null, {
    text: {method: 'PUT'}
});

2.您将text操作的HTTP方法定义为PUT但是在您的路径文件中,您正在处理GET您所需操作的请求。您应该将路线定义更改为:

PUT     /views/full-doc-text.html            controllers.Application.viewText()

3.实现RESTFULL服务时,{。{1}}方法通常用于更新操作。在你的情况下,你似乎没有更新任何东西。因此我建议仅使用PUT方法进行约定。