在角度js控制器中获取ModelAndView数据

时间:2016-12-26 14:10:10

标签: angularjs spring-mvc

我试图以角度js获取模型数据,但无法获得它。我在spring mvc side打印了这个值。数据被存储并使用给定的密钥成功检索。任何人都可以告诉我如何实现这一点。

我的控制器 -

@RequestMapping(value = "/home.web", method = RequestMethod.GET, produces = {
            "application/json" })

    public  ModelAndView getUSCity(@RequestParam ("statechoice") String statechoice) {


        List<String> msa = new ArrayList<String>();     
        msa = msaService.getMsaCodes(statechoice);


        /*ModelAndView model = new ModelAndView("Home");
        model.addObject("cities",msa);
    System.out.println(model.getModel().get("cities"));*/

        //return msa;
        return new ModelAndView("Home", "cities",msa);
    }

我的角度js -

function MyController($scope, $http) {

        $scope.getPersonData = function() {         
            $http({
                method : 'GET',
                url : 'home.web'
            }).success(function(data, status, headers, config) {
                alert(data);
                $scope.cities = data;
            }).error(function(data, status, headers, config) {
                console.log("error");
                // called asynchronously if an error occurs
                // or server returns response with an error status.
            });

        }; 
    };

1 个答案:

答案 0 :(得分:0)

将代码拆分为控制器和服务,因为你不应该直接从cotroller进行api调用(最好的情况)。应该使用服务。控制器仅用于控制模型以在视图中显示它。

<强> myService.js

app.service('myService', ['$http', '$q', function($http, $q){
    return {
             getPersons: function(obj) {  
                    var deferred = $q.defer();       
                    $http({
                        method : obj.method,
                        url : obj.url
                    }).then(function(response) {
                        deferred.resolve(response);
                    }, function(error) {
                        alert(error);
                        deferred.reject(error);
                        // called asynchronously if an error occurs
                        // or server returns response with an error status.
                    });
                    return deferred.promise();

                }; 
         }
    });

<强> myController.js

function MyController('MyController', ['$scope', 'myService', function($scope, myService){
        $scope.persons = [];
        var obj = {method: 'GET', url: 'home.web'};
        myService.getPersons(obj).then(function(response){
          $scope.persons = response.data // or $scope.persons = response check yourself
        }, function(error){
           alert(error);  
        })
    }]);