RequestPager将server_api中的所有属性作为查询字符串发送给请求。但是,有时我想在某些条件下排除参数。这就是我设置参数的方式:
server_api: {
query: function () {
return this.searchQuery
},
type: function(){ return this.searchType }
}
如果this.searchQuery
为空,则会将网址设为?query=&type=1
。但我不想发送query
或type
当它为空或我的其他条件失败时。
我知道肮脏的方式:
if(!myCollection.searchQuery){
delete(myCollection.server_api.licensed);
}
但这不可维护。因为文字时间我要创建这个功能。所以,我正在寻找一种更好的方法。任何帮助?
答案 0 :(得分:0)
_.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
成为返回相应对象的函数。