Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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_View - Fatal编程技术网

Javascript 统计或选择主干视图实例

Javascript 统计或选择主干视图实例,javascript,backbone.js,view,Javascript,Backbone.js,View,假设我正在尝试创建一个toDo应用程序,单击每个toDo会为每个toDo项打开一个编辑表单。我每次最多只希望打开一个编辑表单,因此现在我正在toDoItem视图的edit方法中执行此操作: edit: function (e) { e.preventDefault(); if ($('.editForm').length == 0) { //create form model and view } } 这是可行的,但似乎不是很有骨气。是否有方法选择或统计特定视图(

假设我正在尝试创建一个toDo应用程序,单击每个toDo会为每个toDo项打开一个编辑表单。我每次最多只希望打开一个编辑表单,因此现在我正在toDoItem视图的edit方法中执行此操作:

edit: function (e) {
  e.preventDefault();    
  if ($('.editForm').length == 0)  {
    //create form model and view
  }
}

这是可行的,但似乎不是很有骨气。是否有方法选择或统计特定视图(在本例中为表单视图)的所有实例?

好的,主干中没有实用程序方法。view可统计特定视图的实例。这里有一些想法

  • 也许你的每个待办事项表都与一个模型相关联?在这种情况下,您可以使用model.set/get“editing”和collection.isAlreadyEditing()来筛选此字段中的模型:

    (collection.filter(函数(模型){return model.get(“editing”)})。长度>0

    这将允许您在更改时使用:在视图中编辑事件以控制逻辑,并在集合中使用方便的帮助函数来定义所有这些TODO作为一个整体的行为。这将是在主干中实现更接近控制器模式的方法之一

  • 主干网中的另一个常见功能是在实例化子视图时保留所有子视图的数组,以便只需执行以下操作:

    _.any(子视图、函数(视图){return view.editing;})

    假设在对子视图进行切换时,在子视图中保留一个编辑标志

  • 您可以让视图侦听带有id或模型的toggleEdit事件,或者识别正在编辑的内容的事件,有时事件处理程序可以像toggleClass(“打开”,model==this.model)

  • 我相信还有数百万种其他的想法。但是计算jQuery选择的元素在列表中可能不是很高