如何从具有特定属性的集合中获取模型

时间:2013-06-21 10:38:46

标签: backbone.js model

我想在我的集合中获得一些具有属性单位的模型。我目前的方法涉及到这个,

        var unitIds = ciLocal.where({unit: !null});
        console.log(unitIds.length);

奇怪的是删除!当上面的代码返回0时,返回58(总数减去那个单位不为空的值)。

有人能建议一个好方法来循环我的收藏并返回那些有单位内容的模型吗?

可能值得一提的是,该单元包含两个值,一个是unitID,另一个是更多值的数组。我需要恢复整个模型,而不仅仅是单位部分。

在此屏幕截图中,您可以看到68有空,而69有对象。 enter image description here

{ “carID”: “37”, “单元”:{ “的UnitID”: “37_Chaffinch_75”, “positionHistory”:[{ “LAT”: “51.474312”, “长”: “ - 0.491672”,“时间“:”2011-07-08 11:24:47“,”状态“:”1“,”estimatedSpeed“:”0“,”lastSoundFileName“:”停车场出口“,”lastSoundRange“:”10“,” lastSoundTime“:”2011-07-08 11:25:03“,”isToday“:false,”minutesAgo“:1028188}]},”注册“:”CJ-361-YG“,”颜色“:”Luxor“ , “电话”: “”, “模型”: “SDV8”}

1 个答案:

答案 0 :(得分:3)

您可以在集合中使用_.filter来指定自定义验证功能。

  

过滤器 _.filter(list,iterator,[context])
  查看列表中的每个值,返回所有传递的值的数组   真相测试(迭代器)。

这样的事情应该使模型保持定义的非空值

var c = new Backbone.Collection([
    {id: 1, unit: 1},
    {id: 2, unit: null},
    {id: 3}
]);

c.filter(function(model) {
    var v = model.get('unit');
    return ((typeof(v)!=='undefined') && (v!==null));
})

演示http://jsfiddle.net/nikoshr/84L2R/