如何使用Angular

时间:2015-08-24 15:26:12

标签: angularjs post angular-resource

我用Java编写了一个简单的Rest服务,请参阅下面的代码

@POST
@Path("/add/")
@Consumes("application/json")
public String addUser(@FormParam("name") String name) throws JSONException{
    String val = "{user" + " : " + name +"}";
    JSONObject jso = new JSONObject(val);
    return jso.toString() ;
}

我试图通过工厂和控制器从Angular调用此Web服务,但它无法正常工作。请参阅下面的JavaScript代码:

var app = angular.module('myApp', ['ngResource']);        

app.factory('FctStudent', function($resource){
        return $resource('http://localhost:10080/ClientAngular/Api/student/add/:name',
            {name : '@name'},
            {'save' : {method : 'POST'}}
        )
    });

    app.controller('SixCtrl', function($scope, FctStudent){
        $scope.titre = "Controleur SixCtrl";    
        $scope.save = function(){
            var donnees = $scope.data;
            var utilisateur = donnees.user;
            console.log(donnees);
            $scope.resultat = FctStudent.save(utilisateur);            
        };
    })
你可以告诉我有什么问题吗? 提前谢谢。

编辑1

现在我已经使用了这段代码:

var app = angular.module('myApp', ['ngResource']);

app.factory('FctStudent', function($resource){
        return $resource('http://localhost:10080/ClientAngular/Api/student/add/:name',
            {name : '@name'},
            {'save' : {method : 'POST'}}
        );
    });

app.controller('FirstCtrl', function($scope, FctStudent){
    $scope.titre = "FirstCtrl";
    $scope.valider = function(){
        var prenom = $scope.user.firstname;
        FctStudent.save()
            .then(function(response) {
                $scope.resultat = response;
            })    
    };
});

在我的网络控制台中,我得到了这个:

enter image description here

你有什么建议吗? 谢谢大家!

1 个答案:

答案 0 :(得分:0)

FctStudent.save是异步请求,因此只返回promise。您必须等待其余(asycn)请求完成才能访问其响应。请尝试以下代码。

    var app = angular.module('myApp', ['ngResource']);        

    app.factory('FctStudent', function($resource){
        return $resource('http://localhost:10080/ClientAngular/Api/student/add/:name',
            {name : '@name'},
            {'save' : {method : 'POST'}}
        )
    });

    app.controller('SixCtrl', function($scope, FctStudent){
        $scope.titre = "Controleur SixCtrl";    
        $scope.save = function(){
            var donnees = $scope.data;
            var utilisateur = donnees.user;
            console.log(donnees);
            FctStudent.save(utilisateur)
            .then(function (response) {
                $scope.resultat = response;
            }
        };
    })