0

我想在我正在编写的应用程序中有一些路由来限制返回的结果数量。

目前我的主控制器中有以下内容:

init: function(){

    MyModel.bind("refresh", this.proxy(this.addAll));

    this.routes({
        "/subset": function(){
            var items = MyModel.select(function(model){
                //Do a test on model
                return (itemToBeReturned === true);
            });
        }
    });
    MyModel.fetch();
},

addAll: function () {
    MyModel.each(this.proxy(this.addOne));
},

addOne: function (model){
   //Do some stuff with model
}

我想定义一些获取原始数据子集的路由。正如你所看到的,我没有对我目前在我的路线中过滤的结果做任何事情。

有没有办法让 fetch() 只返回所有记录的子集,以便刷新事件只接收这些记录作为参数?

4

2 回答 2

1

因此,在过去几个晚上深思熟虑并得出我自己的结论之后,我将在这里回答我认为正确的答案。希望它可以帮助某人。

问题实际上归结为在数据到达刷新方法之前对数据进行此过滤是否合适。获取正在访问服务器并刷新接收这些记录 - 除非您开始使用脊椎的内部结构,否则这不会改变。

我基本上是在问如何过滤数据客户端。可能更好的是通过子集 URL 仅请求数据的子集,然后不必担心如何减少到我需要的数据。事实上,这可能是最明智的方法,因为唯一的另一种方法(我现在可以看到)是让默认提取发生,然后隐藏所有未出现在我的数据子集中的记录.

于 2012-10-13T22:33:40.180 回答
0

我基本上在做类似的事情。这是有效的(我已经看到了):

Model.extend({
    url: '/api/model', //whatever your endpoint is
    filter: function(id) {  //pass in whatever you want it to match
        return this.select(function(c) { //c is the record it is checking
            return c.id === id; //returns true and displays the record
        });
    }
});

var filteredItems = Model.filter(id); //filteredItems is a subset of the records.
Controller.render(filteredItems); //pass them to your render function, or do whatever you want with them.
于 2013-03-14T20:19:25.380 回答