当前位置: 首页 > 知识库问答 >
问题:

骨干-访问集合的其他视图

徐奇
2023-03-14

我有一个收藏模型的典型结构。

在视图中,每个对象都有一个“编辑”按钮,该按钮应该取消激活其他对象的所有“编辑”按钮。

我想知道这样做的最佳做法是什么。谢谢!!

共有2个答案

轩辕亮
2023-03-14

好的,我提出了以下方法:

假设模型有一个属性status,当它被修改为active时,我想在其他条目中隐藏编辑按钮(或者干脆禁用它)。

“我的集合”视图侦听模型中的更改:

initialize: function(){
  this.listenTo(this.collection, "change:status", this.triggerEditable);
},

监听器回调看起来像这样:

triggerEditable: function(obj){
    var triggerValue = null;

    // I am interested in a status which became 'active' or stopped being 'active'
    if (obj.get("status") == 'active' && obj.previous("status") != 'active') {
        triggerValue = "editable:false";
    } else if (obj.get("status") != 'active' && obj.previous("status") == 'active') {
        triggerValue = "editable:true";
    }

    // for any other status change - return
    if (!triggerValue) return;

    // trigger is fired for all other objects in the collection
    _.each(obj.collection.without(obj),function(otherObj) {
        otherObj.trigger(triggerValue);
    });
}

因此,当一个对象变为活动或停止活动时,会为所有其他条目触发可编辑:false可编辑:true。我需要做的就是在模型视图初始值设定项中添加一个侦听器:

this.listenTo(this.model, "editable:false", this.disableEdit);
this.listenTo(this.model, "editable:true", this.enableEdit);

在这里,我想我可以将这两行合并成一行,首先通过监听可编辑的命名空间(如何??)然后通过向函数传递参数(同样,具体如何?)。

从这里开始,它是直接的-实现侦听器回调:

disableEdit: function() {
    var e = this.$el.find('button.edit')
    e.attr('disabled','disabled');
}

如果有人有什么要补充或使这个解决方案更好,我会很高兴听到。无论如何,希望它能对其他人有所帮助!!

颜畅
2023-03-14

您可以在模型上添加默认设置为true的属性editable。然后,当您单击其中一个视图上的“编辑”按钮时,可以循环浏览其他视图的所有模型,并将editable设置为false。在视图上,您将听取模型更改,然后重新渲染视图。如果editablefalse,您将禁用编辑按钮。

 类似资料:
  • 下面是我用(FacetModels)填充我的收藏的内容 如何访问可用值[]数组 “FacetModels”:[{“FacetDisplayLabel”:null,“SelectedValues”:[],“AvailableValues”:[],“UnknownResults”:0,“ActionURI”:null,“FacetGroupName”:“Category”,“FacetGroupFri

  • 问题内容: 我正在开发一个android应用程序,并且有一个按钮可以启动/暂停某些模拟过程。在此过程运行时,我需要实时输出一些数据。但是,当我为仿真创建新线程时,无法从该线程访问视图(将其命名为TextView),因为只能从创建它们的线程访问它们。另一方面,新线程是必需的,因为否则在仿真运行时,用户将无法执行任何操作(例如,按下其他一些按钮)。在这种情况下,创建新服务还需要创建一个新线程。我应该如

  • 问题内容: 在过去的几周里,我一直在与Facebook框架React.js和Backbone一起工作,但是我仍然不确定是否有什么最合适的方法来重新渲染React组件。已作为道具传递。 目前我要做的是在集合上设置侦听器,并在触发时设置状态: 我已经看到了将模型克隆到状态的示例: 我也看到了变体,其中props中的模型/集合直接在渲染中使用,而不是使用状态,然后在集合/模型发生更改时调用forceUp

  • 如下图所示。我在回收器视图上方有一个布局,下方有一个。两个标签都是线性布局。我面临两个问题。 > 因为回收器视图有内部滚动,所以如果回收器视图中的项目增加,第一个线性布局将保持在相同的位置,但我希望它在滚动项目时向上滚动。 当项目在回收器视图中增加时,第二个布局消失了。如何使布局滚动时,回收器视图到达它的最后一个项目。 试用android:nestedScrollingEnabled=“false

  • 问题内容: 我最近拾起Java并遇到了问题。我有几个具有不同类的文件,但是我无法弄清楚如何访问文件中声明了其他类之外的其他类的对象。例如: 我不确定如何从其他文件和类本身有效访问其他类的这些对象?我知道我可以使对象静态化,然后通过它们所在的类将它们作为变量进行访问,但这似乎有点违反直觉?我来自面向对象较少的编程背景,因此我仍在尝试了解Java的编程风格。 问题答案: 您可能只想要这样的东西: 希望

  • 问题内容: 我有一个发布功能,如下所示: 现在假设在某些时候对Projects进行了更改,结果是上面返回了一个不同的项目,因此Tasks.find将返回其他任务。但是,对项目所做的更改不会重新发布 任务 我已经使用了reactPublish,但事实证明该程序包存在问题(并且也没有任何单元测试)。因此,是否有一种简单的方法可以在项目更改时重新发布此发布功能? 问题答案: 通过调用安装软件包。 添加软