我有一个 Backbone 集合,其中包含 Canvas 的 X 和 Y 坐标及其宽度和高度(矩形)。当我单击 Canvas 元素时,我必须在模型中搜索单击坐标是否在 Xcoordinate + width
之间。和Ycoordinate+height
,但我找不到用 >
搜索集合的方法或<
状况。
是否可以使用这些条件搜索 Backbone 集合? collection.where
只允许=
情况。
型号
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,
});
最佳答案
主干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);
});
关于javascript - Backbone 搜索条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316802/