【问题标题】:Find model which doesnt have an attribute in Backbone collection在 Backbone 集合中查找没有属性的模型
【发布时间】:2016-04-29 02:06:22
【问题描述】:

我知道我们可以根据属性找到集合中的所有模型

var friends = new Backbone.Collection([
              {name: "Athos",      job: "Musketeer"},
              {name: "Porthos",    job: "Musketeer"},
              {name: "Aramis",     job: "Musketeer"},
              {name: "d'Artagnan"},
            ]);
friends.where({job: "Musketeer"});

但是我想找到没有属性或键的模型。怎么做? 类似的东西

friends.where(not(job));

非常感谢任何帮助

【问题讨论】:

    标签: javascript backbone.js collections backbone.js-collections backbone-model


    【解决方案1】:

    我会尝试这样的事情,成为骨干收藏的朋友。

    function isMusketeer() {
      return friend.get('job') && friend.get('job') === "Musketeer"; 
    }
    function hasNoJob() {
      return !friend.get('job'); 
    }
    
    friends.find(hasNoJob); //The first without a job
    friends.find(isMusketeer); //The first that is a musketeer
    friends.filter(hasNoJob); // List of results that has no job
    friends.filter(isMusketeer); // List of results that are musketeer
    

    我只是将条件/谓词分开,然后应用于你需要的集合下划线函数,在这种情况下可以是多个结果或一个结果,这取决于你的需要。

    【讨论】:

      【解决方案2】:

      Backbone 为 Backbone.Collection 实例提供 wide range of underscore methods。其中一种方法是Backbone.Collection.filter,它根据自定义函数的结果过滤集合中的模型。以下是如何使用它的示例:

      var friends = new Backbone.Collection([
          {name: "Athos",      job: "Musketeer"},
          {name: "Porthos",    job: "Musketeer"},
          {name: "Aramis",     job: "Musketeer"},
          {name: "d'Artagnan"},
      ]);
      
      friends.filter(function(model) {
          return _.isUndefined(model.get('job'));
      });
      

      上面代码的JSFiddle:https://jsfiddle.net/Ljve5104/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多