将变量传递给Backbone.where

时间:2015-09-25 17:44:23

标签: javascript backbone.js underscore.js lodash

我想根据获得的值从JSON形成一个集合,而Backbone where似乎是一个完美的工具,但看起来它并不接受变量。是否可以使用Backbone,Lodash或Underscore方法实现这种功能?

### collection instantiated above

App.vent.on 'event', (obtained_value) ->
  desired_models = collection.where(attribute: obtained_value)
  console.log desired_models

### outputs empty array
>[]

当我直接传递key: value时,它确实有效,但我需要动态地形成集合。也许我最初采取了错误的做法,解决方案是另一个方向?

2 个答案:

答案 0 :(得分:0)

不能工作,你需要传递一个对象,就好像这样

collection.where({attribute: obtained_value});
在coffescript中,您可以执行以下操作

attribute_var=
     attribute:obtained_value

collection.where(attribute_var);

最好的问候

答案 1 :(得分:0)

我假设你的目标是改变你要搜索的attribute,因为如果值变化,对象文字应该可以正常工作。

你可以做到这一点,而不是内联对象文字。以下是我在JavaScript中的表现:

App.vent.on('event', function (obtainedValue) {
    var finder = {};
    finder[attribute] = obtainedValue;
    desiredModels = collection.where(finder);
    console.log(desiredModels);
});