Backbone.js请求寻呼机有条件地从URL中排除参数

时间:2013-06-21 18:09:20

标签: javascript backbone.js

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

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

如果this.searchQuery为空,则会将网址设为?query=&type=1。但我不想发送querytype当它为空或我的其他条件失败时。

我知道肮脏的方式:

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

但这不可维护。因为文字时间我要创建这个功能。所以,我正在寻找一种更好的方法。任何帮助?

1 个答案:

答案 0 :(得分:0)

如果你看how server_api is used

_.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成为返回相应对象的函数。