计数或选择主干视图实例
Count or Select Backbone View Instances
假设我正在尝试创建一个toDo应用程序,单击每个toDo会为每个toDoItem打开一个编辑表单。我一次最多只想打开一个编辑表单,所以现在我用toDoItem视图的编辑方法来做这件事:
edit: function (e) {
e.preventDefault();
if ($('.editForm').length == 0) {
//create form model and view
}
}
这行得通,但看起来不太地道。有没有办法选择或统计特定视图(在本例中为表单视图)的所有实例?
AFAIK,Backbone.View中没有实用程序方法来统计特定视图的实例。以下是一些想法。。。
-
也许你的每一个TODO表单都与一个模型绑定在一起?在这种情况下,您可以有一个model.set/get"editing"和一个collection.isAlreadyEdit(),它将过滤此字段上的模型:
(collection.filter(函数(模型){return model.get("编辑")}).length>0
这将允许您在更改时使用:在视图中编辑事件以控制逻辑,并在集合中使用方便的助手函数来定义所有TODO的某些行为。这将是在Backbone中实现更接近Controller模式的一种方法。
-
主干网中另一个常见的事情是,当你安装所有子视图时,保留它们的数组,所以你可以只做一个:
_.any(subViews,function(view){return view.editing;})
假设在切换子视图时,在子视图中保留一个编辑标志。
-
你可以让你的视图监听一个toggleEdit事件,该事件带有id或模型或标识正在编辑的内容的东西,有时事件处理程序可以像toggleClass("open",model==this.model)一样简单…
我相信还有数以百万计的其他想法。但是计算jQuery选择的元素在列表中可能不是很高!
- UI5 路由不实例化视图
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js:等待视图模型实例化完成
- 如何在Backbone中创建自实例化视图
- 计数或选择主干视图实例
- 为什么我在尝试实例化一个空的backbone.js视图时出现类型错误
- 主干视图实例未按预期工作
- Aurelia组件在其他视图模型中使用时不共享实例
- 使用ng repeat添加多个视图实例时的范围界定问题
- 主干选项卡内部使用的同一视图的多个实例
- ExtJS 多视图实例
- 使用主干.js中的路由管理单页应用程序中的多个视图实例
- RequireJS, Pub/Sub.如果没有糟糕的解决方法,我无法从其自己的方法访问视图实例
- 获取在视图实例中定义的具有特定 ID 的数据
- Ember.js:如何访问嵌套视图实例
- 如何销毁这个Backbone.js视图实例?
- 导致冲突的多个视图实例中的代码
- 主干异步视图实例化
- BackboneJS -缓存视图实例
- 如何在主干中维护多个集合和视图实例