在包含json的字符串上使用ng-repeat

时间:2014-11-15 13:13:39

标签: javascript json angularjs jersey angularjs-ng-repeat

我遇到这种情况:我想在包含Json行的String上使用ng-repeat指令。这个字符串来自休息服务与球衣。当我调用包含此指令的页面时出现错误。我怎么能解决这种情况?谢谢大家。

SyntaxError: Unexpected token {
at Object.parse (native)
at fromJson (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:1035:14)
at defaults.defaults.transformResponse (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6933:18)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6908:12
at Array.forEach (native)
at forEach (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:302:11)
at transformData (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6907:3)
at transformResponse (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:7589:17)
at deferred.promise.then.wrappedCallback (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:10943:81)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11029:26
}

这是我的代码:

list.html

<tr ng-repeat="person in persons">
   <td>{{ person.name }}</td>
   <td>{{ person.lastname }}</td>
   <td>{{ person.tasks }}</td>
   <td>{{ person.skills }}</td>
   <td><a ng-click="editUser(person.id)" class="btn btn-small btn-primary">Modifica</a></td>
   <td><a ng-click="deleteUser(person.id)" class="btn btn-small btn-danger">Elimina</a></td>
</tr>

services.js

services.factory('PersoneFactory', function ($resource) {

return $resource(baseUrl + '/GestRisorse/rest/person/personList', {}, {

    query: { method: 'GET', isArray: false  }, 
   })
});

controller.js

app.controller('PersonListCtrl', ['$scope', 'PersoneFactory', 'PersonFactory', '$location',
  function ($scope, PersoneFactory, PersonFactory, $location) {

 $scope.persons = PersoneFactory.query();

  }]);

restController.java

@Path("/person")
 public class PersonRestController {

   private PersonDAO personDao = new PersonDAO();

     @GET
     @Path("/personList")
     @Produces("application/json")
     public String getPersonList() {

        return personDao.getAllPerson();
            }
    ...
    }

personDao.java

public String getAllPerson(){
        DBCollection collection = connection.getCollection("users");


        StringBuffer s = new StringBuffer();

        DBCursor cursor = collection.find();
        try {
           while(cursor.hasNext()) {
               s.append(cursor.next());
           }
        } finally {
           cursor.close();
        }


        return s.toString();

    }
...
}

1 个答案:

答案 0 :(得分:2)

感谢在我的问题下写评论的人,我想说他们发现了问题,那里有2:

1)我没有正确使用承诺,现在我在控制器中添加这些行

PersoneFactory.query().$promise.then(function(data) { $scope.persons = JSON.parse(data); },  function(errResponse) { console.log("errore"); });

2)我没有正确格式化json,所以来自后端的字符串不是一个有效的json。

感谢所有人。