Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干木偶收集过滤_Javascript_Backbone.js_Collections_Marionette - Fatal编程技术网

Javascript 主干木偶收集过滤

Javascript 主干木偶收集过滤,javascript,backbone.js,collections,marionette,Javascript,Backbone.js,Collections,Marionette,我试图允许用户搜索集合中的显示名和电子邮件 到目前为止,我的整个复合视图看起来像下面的代码。这将呈现并记录我的var搜索,但我不确定如何使用集合。在新主干的位置和之后。集合,我是否调用呈现 define(["marionette", "text!app/templates/bamboo/employees/collection.html", "app/collections/bamboo/employees", "app/views/bamboo/employees/item", "jque

我试图允许用户搜索集合中的显示名和电子邮件

到目前为止,我的整个复合视图看起来像下面的代码。这将呈现并记录我的var搜索,但我不确定如何使用集合。在新主干的位置和之后。集合,我是否调用呈现

define(["marionette", "text!app/templates/bamboo/employees/collection.html", "app/collections/bamboo/employees",
  "app/views/bamboo/employees/item", "jquery"],
  function(Marionette, Template, Collection, Row, $) {
    "use strict"
    return Backbone.Marionette.CompositeView.extend({
      template: Template,
      itemView: Row,
      itemViewContainer: "ul",
      collectionEvents: {
        'sync': 'hideLoading'
      },
      events: {
        'keyup #filter-input': 'initialize'
      },
      initialize: function () {
        var search = $('#filter-input').val()

        if (typeof(search) != "undefined") {
          console.log(search)
          var filtered = //somehow search collection displayName and email by value search
          this.collection = new Backbone.Collection(filtered);
        } else {
          this.showLoading()
          this.collection = new Collection()
          return this.collection.fetch()
        }
      },
      showLoading: function() {
        this.$el.addClass('loading')
      },
      hideLoading: function() {
        this.$el.removeClass('loading')
      }
  })
})

您可以使用
视图.children.\u视图
木偶网
集合视图和
合成视图
获取视图

代码如下:

_.each(colView.children._views,function(v){
  if(!condition){
     v.$el.hide();
  }
});

您可以在
colView
中隐藏没有条件的视图(在您的示例中,条件可以是
v.model.get('type')='todo'
)。

我认为如果只实例化集合的单个实例,然后调用模型上的函数,这可能会更容易

return Backbone.Marionette.CompositeView.extend({
    template: Template,
    itemView: Row,
    itemViewContainer: "ul",
    events: {
        'keyup #filter-input': 'filter'
    },
    initialize: function() {
       this.filter();
    },
    filter: function () {
        var search = $('#filter-input').val() || '';
        this.collection.invoke('set', 'filter', search);
    },
    // ...
});
然后,对于您的ItemView

Row = Backbone.Marionette.ItemView.extend({
    modelEvents: {
        "change filter": "filter"
    },
    filter: function(model, search) {
        if (model.shouldBeShown(search)) {
            this.$el.show();
        } else {
            this.$el.hide();
        }
    }
});

编辑我的问题。收藏的位置不太准确。不确定问题出在哪里。你能提供一把小提琴吗?我有一个不会抛出错误的程序,但是我没有足够的信息让它运行。