2013-06-21 96 views
1

我想在我的集合中獲取具有屬性單位的某些模型。我目前的方法涉及這個,如何從具有某個屬性的集合中獲取模型

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

奇怪的是,刪除!返回58(總減去那些單位不爲空)值,而上面的代碼返回0.

任何人都可以提出一個好方法來循環我的集合,並返回有單位的任何模型?

它可能值得一提的是,單元包含兩個值,一個是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}]},」registration「:」CJ-361-YG「,」color「: 「Luxor」,「phone」:「」,「model」:「SDV8」}

回答

3

您可以在集合上使用_.filter指定自定義驗證函數。

濾波器 _.filter(列表中,迭代器,[上下文])
看起來通過列表中的每個值,返回該通過 一個道理試驗(迭代)的所有值的數組。

像這樣的東西應該保留模型與定義,非空值

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/

+0

您好,我想這一點,如果我錯了糾正我,但我代替c。與ciLocal並嘗試過這一點。當我登錄ciLocal時,我仍然留下了所有模型。我試着發佈數據結構的屏幕截圖。 – lorless

+0

模型屬性和結構由JSON定義。我發佈了一個包含單元對象的條目 – lorless

+0

嗯,我用你的數據修改了我的小提琴,我得到了預期的結果http://jsfiddle.net/nikoshr/84L2R/2/你能修改我的小提琴來重現你的問題嗎? – nikoshr

相關問題