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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
Backbone.js 如何正确获取活动主干视图?_Backbone.js_Backbone Views - Fatal编程技术网

Backbone.js 如何正确获取活动主干视图?

Backbone.js 如何正确获取活动主干视图?,backbone.js,backbone-views,Backbone.js,Backbone Views,我有一个主干视图,它有子视图,每个视图都可以保持“活动”(只需单击或上下文菜单即可)。我需要从父视图中获取活动子视图的视图引用。正确的方法是什么 我的视图层次结构如下所示: var OuterView = Backbone.View.extend({ initialize: function() { this.children = {}; this.child = new Backbone.View(); this.children[thi

我有一个主干视图,它有子视图,每个视图都可以保持“活动”(只需单击
上下文菜单即可)。我需要从父视图中获取活动子视图的视图引用。正确的方法是什么

我的视图层次结构如下所示:

var OuterView = Backbone.View.extend({
    initialize: function() {
        this.children = {};
        this.child = new Backbone.View();
        this.children[this.child.cid] = this.child;
    },

    render: function() {
        this.$el.html('<div data-view-cid="' + this.child.cid + '"></div>');
        _.each(this.children, function(view, cid) {
            this.$('[data-view-cid="' + cid + '"]').replaceWith(view.el);
        }, this);
    }
};
var OuterView=Backbone.View.extend({
初始化:函数(){
this.children={};
this.child=新主干.View();
this.children[this.child.cid]=this.child;
},
render:function(){
此.$el.html(“”);
_.each(此项、子项、函数(视图、cid){
这个.$('[data view cid=“'+cid+'“]')。替换为(view.el);
},这个);
}
};

最简单的解决方案是将父视图委托给侦听“click div”,并在回调中通过
$(event.currentTarget).closest(“[data view cid]”)获取子视图。


子视图不应该知道父视图,以避免创建僵尸,否则您可能必须清理引用。

最简单的解决方案是将父视图委托给侦听“click div”,并在回调中通过
$(event.currentTarget).最近(“[data view cid]”)获取子视图。


子视图不应该知道父视图以避免创建僵尸,否则您可能必须清理引用。

我更喜欢的方法不是使用活动视图和非活动视图,而是仅渲染活动视图,并在不需要时删除它们


换句话说,处理状态的最简单方法是使事物无状态。

我喜欢的方法不是使用活动视图和非活动视图,而是只渲染活动视图,并在不需要时删除它们



换句话说,处理状态的最简单方法是使事物无状态。

你能为这个问题提供一些源代码吗?我已经更新了帖子。有很多方法可以做到这一点,你的方法也可以接受。我想主要的问题是-如何将子视图的事件委托给父视图?@Vahan Vardanyan你能提供一些吗请提供一些方法?你能为这个问题提供一些源代码吗?我已经更新了帖子。有很多方法可以做到这一点,你的方法也可以接受。我想主要的问题是-如何将子视图的事件委托给父视图?@Vahan Vardanyan你能提供一些方法吗?我有点不同意你的观点。让我来看看magine谷歌文档工具栏。当用户添加新表行时(例如)通过使用工具栏按钮和文档本身可以有多个表,我们如何知道哪个表是最新的?当然,总有一些地方你必须保持活动的概念。我想我的观点是,当我们尽可能避免它时,生活会变得更容易。OK,但我有像Google Docs这样的web应用程序,我正在寻找解决方案h如何实现保持活动对象。你能给我指出正确的方向吗?通常我做的是保持“状态”对象,这扩展了一个模型,基本上保持了当前的UI状态。例如:分页数据,是处于编辑模式或读取模式的页面,等等,所以我可以看到如何在状态对象中存储对活动表的引用。我有点不同意你的看法。让我们想象一下google文档工具栏。当用户添加新表行时(例如)通过使用工具栏按钮和文档本身可以有多个表,我们如何知道哪个表是最新的?当然,总有一些地方你必须保持活动的概念。我想我的观点是,当我们尽可能避免它时,生活会变得更容易。OK,但我有像Google Docs这样的web应用程序,我正在寻找解决方案h如何实现保持活动对象。你能给我指出正确的方向吗?通常我要做的是保持一个“状态”对象,这扩展了一个模型,基本上保持了当前的UI状态。例如:分页数据,页面是否处于编辑模式或读取模式,等等,这样我就可以看到如何在状态对象中存储对活动表的引用