骨干搜索条件

时间:2014-12-05 13:17:39

标签: javascript backbone.js

我有一个Backbone集合,其中包含画布X和Y坐标及其宽度和高度(rect)。当我点击画布元素时,如果点击坐标在Xcoordinate + widthYcoordinate+height之间,我必须在模型中搜索,但我找不到用>或者<搜索集合的方法。 collection.where条件。

是否可以使用这些条件搜索Backbone集合? =仅允许Model = Backbone.Model.extend({ defaults: { LayoutConfigurationId: 0, Xcoord : 0, Ycoord : 0, Width : 0, Height : 0 }, initialize: function (model) { contextMicro.clearRect(model.Xcoord-3, model.Ycoord-3, model.Width+6, model.Height+6); contextMicro.beginPath(); contextMicro.rect(model.Xcoord, model.Ycoord, model.Width, model.Height); contextMicro.fillStyle = 'red'; contextMicro.fill(); contextMicro.lineWidth = 2; contextMicro.strokeStyle = 'black'; contextMicro.stroke(); } }); 条件。

模型

 var Collection = Backbone.Collection.extend({
    defaults: {
        model: Model
    },
    model: MicrophoneModel,       

});

集合

{{1}}

1 个答案:

答案 0 :(得分:1)

Backbone proxies a lot of Underscore functions到集合中,特别是_.filter,允许您编写任何您能想到的过滤功能。

例如,要获取包含给定点x,y:

的所有模型的列表
var c = new Backbone.Collection([
    {Xcoord:10, Ycoord:10, Width:10, Height:10},
    {Xcoord:20, Ycoord:20, Width:10, Height:10}
]);

var x = 15, y = 15;
var found = c.filter(function(m) {
    return (m.get('Xcoord')<x) && ((m.get('Xcoord')+m.get('Width'))>x)
       &&  (m.get('Ycoord')<y) && ((m.get('Ycoord')+m.get('Height'))>y);
});

http://jsfiddle.net/nikoshr/wa5xshoa/