如何使用骨干在parse函数中返回不同的数据类型

时间:2015-10-22 09:52:02

标签: rest parsing backbone.js

我有一个Web服务,它返回文档列表和列表大小。 我在Web服务中的方法如下所示:

public PaginatedJaxbList<DocumentDTO> listDocuments(String currentPage, String name) {
    List<DocumentDTO> docs= getDocsManager.getDocs(currentPage, name);
    int size = getDocsManager.getDocsSize();
    PaginatedJaxbList<DocumentDTO> docList = new PaginatedJaxbList<DocumentDTO>(docs, size);
    return docList;
}

此方法由其他Web服务调用,如下所示:

@WebService
@Path("/docs")
public interface docService {

@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
public PaginatedJaxbList<DocumentDTO> listDocs(@QueryParam("p") String currentPage, @QueryParam("name") String name);
}

现在我从主干集合中的解析函数解析Web服务的响应:

    Entities.DocumentCollection = Backbone.Collection.extend({
        url : "../services/api/docs",
        model : Entities.Document,
        comparator : "name",
        parse : function(data) {
            // Here i need to return both params the size and the list
            //return data.size;
            //return data.list;
        }
    });

在解析函数中,我需要获取要显示的列表的两个参数以及动态分页需要的大小。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

Collections parse方法应该返回一个对象数组,将创建一个对应于数组中每个项目的模型,或者一个对象,在这种情况下将创建单个模型。

所以你应该只返回数组,但你可以将其他属性附加到集合中,以便稍后访问,如下所示:

Entities.DocumentCollection = Backbone.Collection.extend({
    url : "../services/api/docs",
    model : Entities.Document,
    comparator : "name",
    parse : function(data) {
        this.size = data.size; // add size as a collection property
        return data.list; // return the list from which models should be populated
    }
});