这样的事情会让您遍历对象的层次结构以找到一个值:
var x = { y: { z: 1 }};function findprop(obj, path) { var args = path.split('.'), i, l; for (i=0, l=args.length; i<l; i++) { if (!obj.hasOwnProperty(args[i])) return; obj = obj[args[i]]; } return obj;}findprop(x, 'y.z');您可以将此作为方法添加到
Fixture对象中:
Fixture = Backbone.Model.extend({ findprop: function(path) { var obj = this.attributes, args = path.split('.'), i, l; for (i=0, l=args.length; i<l; i++) { if (!obj.hasOwnProperty(args[i])) return; obj = obj[ args[i] ]; } return obj; }});并用它来提取价值
var f = new Fixture();f.findprop("HomeTeam.TeamID");findWhere然后可以将该方法重写为
findWhere: function (Attribute, Value){ return new Project.Collections.Fixtures(this.filter(function (fixture){ return fixture.findprop(Attribute) === Value; }));}和一个小提琴玩http://jsfiddle.net/nikoshr/wjWVJ/3/



