0

RequestPager 将 server_api 中的所有属性作为查询字符串发送到请求。但是,有时我想在某些条件下排除参数。这就是我设置参数的方式:

server_api: {
        query: function () {
            return this.searchQuery
        },
        type: function(){ return this.searchType }
}

如果this.searchQuery为空,则使 URL 像?query=&type=1. 但是我不想发送query或者type当它是空的或者当我的其他一些条件失败时。

我知道像这样的肮脏方式:

if(!myCollection.searchQuery){
    delete(myCollection.server_api.licensed);
}

但这是不可维护的。因为文本时间我必须创建这个函数。所以,我正在寻找一种更好的方法来做到这一点。有什么帮助吗?

4

1 回答 1

0

如果你看看如何server_api使用

_.each(_.result(self, "server_api"), function(value, key){
  if( _.isFunction(value) ) {
    value = _.bind(value, self);
    value = value();
  }
  queryAttributes[key] = value;
});

你会看到它使用_.result

结果 _.result(object, property)

如果命名属性的值是一个函数,则调用它;否则,退回它。

var object = {cheese: 'crumpets', stuff: function(){ return 'nonsense'; }};
_.result(object, 'cheese');
=> "crumpets"
_.result(object, 'stuff');
=> "nonsense"

这意味着您可以创建server_api一个返回适当对象的函数。

于 2013-06-26T06:27:20.257 回答