我有一个Backbone集合,其中包含画布X和Y坐标及其宽度和高度(rect)。当我点击画布元素时,如果点击坐标在Xcoordinate + width
和Ycoordinate+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}}
答案 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);
});