问题标签 [backbone-events]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - 更新集合中的模型
我的问题是如何更新集合中的模型?这就是我正在做的事情。在页面加载时,我获取联系人列表。在一个视图中,我在一个无序列表中列出了这些联系人。每个联系人都是可点击的,这将带您进入编辑表单。对联系人进行更改后,您可以保存该联系人。这将带您进入将更改的模型保存回集合的方法。你会怎么做?在骨干文档中没有更新方法(或者至少我没有看到它)。我创建了一种方法来做到这一点,但我不确定它是否是首选的 Backbone 方式。这里是:
你会认为会有这样的功能:
谢谢您的帮助
javascript - 绑定到由 collection.create() 创建的模型的错误事件?
我有一个评论集合和一个用于创建新评论的视图。每条评论都会进行一些客户端验证:
评论集合非常简单:
我在NewComment
视图中创建评论。此视图可以访问评论集合并将其用于create
新评论。但是,Comment
模型中的验证失败似乎并没有通过集合冒泡。有没有击球手的方法来做到这一点?
javascript - Backbone.js - 使用触发器触发事件并传递数据
我正在使用backbone.js 作为MVC 框架编写一个选项卡菜单组件。当用户单击选项卡时,组件将切换选项卡(内部操作),但随后我希望组件的侦听器响应与事件关联的操作。这背后的想法是我将各种点击抽象为特定的动作。例如,每个选项卡的模型是具有以下结构的哈希:
将触发的事件将被称为“动作”,因此侦听器将响应“动作”,但随后将转发特定命令。例如:
侦听器将依次处理事件,如下所示:
}
这可能吗?我无法从文档中收集到这一点。提前感谢您提供的任何见解。
javascript - BackboneJS:从视图提交表单时触发表单验证
因此,我开始使用 Backbone.js 来构建我的 javascript 代码并拥有模块化应用程序,但我遇到了一个关于事件的问题。
我想制作一个简单的视图来处理表单并验证它们。将来我想添加所有的 javascript 功能,如实时验证、悬停效果等。
这是我现在拥有的简化代码:
我遇到的问题是提交表单时未调用 validateFields 函数。我也尝试在构造函数上使用它:
现在,最后一个代码有效,但验证函数中的“this”将是 $('#formid') 对象,而不是我的 Form 对象。
javascript - 骨干事件委托 eventName 问题
我有一个足够简单的事件对象的视图(在咖啡脚本中,因为它很甜)
我的活动不受约束。当我到达未缩小的 0.5.3 Backbone.js 文件中的第 967 行时
当我在 Chrome 中设置断点时,它会以不正确的 jQuery 语法结束:
选择器是正确的,但我不确定为什么在第 963 行有一个附加到我的“点击”字符串,它指示事件类型。该方法在使用下划线绑定之前读取为我的console.log
方法,所以这是正确的。
最终结果是我的事件没有被触发。想知道我在这里搞错了什么。
backbone.js - 每个实例事件绑定的主干
我有一个视图,它为列表中的每个项目创建一个子视图。我们一般称它们为 ListView 和 ListItemView。我在 ListItemView 上附加了如下事件:
我为 ListItemView 生成了模板生成的 html,大致如下所示(将 lb/rb 交换为 {/},以便您可以看到“非法”html):
问题是,当单击任何 [x] 时,所有 ListItemViews 都会触发它们的 removeItem 函数。如果我让它脱离了这个模型的 id,那么我会删除页面上的所有项目。如果我让它离开单击项目的父元素的父元素来获取数据 ID,我会删除每个 ListItemView 实例。有没有办法创建一个只会触发单个 removeItem 的特定于实例的事件?
如果我让 ListView 持有 ListItemView 的单个实例并重新分配 ListItem 模型并为列表中的每个项目呈现它就可以工作。我最终只触发了一个动作(removeItem)。问题是,我必须找到点击目标的父级才能找到 data-id attr。就个人而言,我认为下面的代码片段相当难看,想要更好的方法。
任何人提供的任何帮助将不胜感激。
backbone.js - Backbone.js:如何在更改模型集合时强制视图自动刷新
所以我有一个看起来像这样的视图。
我已经实例化了这样的视图......
在其他地方(另一种视图自定义方法)我已经更新了定价视图的集合
这没有看到做任何事情。
所以现在集合中的项目更少了,但新视图永远不会在 DOM 中呈现或刷新。
我该怎么做 1.) 刷新 DOM 中的渲染?2.) 让它自动刷新DOM?我是否必须以某种方式告诉它在集合更改时进行渲染?
backbone.js - Backbone.js 嵌套集合,添加事件触发,但返回父模型
我一直在尝试将集合嵌套在模型中。我有一个食谱,一个食谱有成分列表(集合),它有成分(模型)。
我首先尝试了主干关系模型,但随后选择了此处提供的方法主干.js 结构化嵌套视图和模型
当我向集合中添加成分时,会触发添加事件。
但是在我的控制台中,我试图输出添加的成分,我正在返回配方模型。
我的模型看起来像这样
如何让绑定返回刚刚添加到集合中的成分,而不是整个配方模型?
javascript - 骨干路由器事件
Backbone.Router
在执行路由之前和之后是否存在事件?我的应用程序jQuery.mobile
在执行路由之前需要使用并调用 $.mobile.changePage,并且在控制器中可以通过 $.activePage 访问当前显示的页面。控制器操作完成后,我应该触发create
文档上的事件以通过 $.mobile 新创建的元素来“增强”。我通过替换来做到这一点loadUrl
可能有一些像这样的内置事件吗?
javascript - 如何处理backbone.js中视图之外的对象事件?
正如在主干-todolist 示例中一样,我有一个元素集合。我制作了 2 个视图,一个用于列表,一个用于每个元素。它工作得很好。
但是,由于我需要修改列表的元素,因此在元素视图中,我处理修改事件,使用包含 html 表单的colorbox 插件打开一个弹出窗口。html 是动态创建的并传递给 colorbox 元素。
我使用 colorbox 和骨干形式的附加插件。
现在:弹出窗口不是我视图的子项(在 DOM 中),所以我不知道如何在“按钮提交”操作上触发事件。
这是代码片段(省略了无用的部分):
当弹出窗口打开时,会触发 saveEl 方法(或函数?,哪个术语更正确?)。
我还尝试了不同版本的代码:
在第二种情况下,在创建视图时调用 saveEl 函数(因此对列表的每个元素一次)。
我知道我为弹出窗口创建了一个视图,但有些人说它太复杂了,应该有一个更简单的架构。
事实上,这个问题更笼统:是否可以在不为它们创建视图的情况下处理 $(this.el) 范围之外的 DOM 对象触发的事件?
提前致谢。
- - - - - - - - -更新: - - - - - - -
工作代码的最终版本如下: