让模型听嵌套模型和集合的最佳模式?

2024-04-19前端开发问题
2

本文介绍了让模型听嵌套模型和集合的最佳模式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

使用 Backbone.js 让模型一直监听所有嵌套模型和集合的最佳模式是什么?

Using Backbone.js what is the best pattern to have models listen to all of their nested models and collections all the way down?

我应该将嵌套模型/集合放在属性中吗?我应该手动创建父母关系并触发事件吗?

Should I put nested models/collections in attributes? Should I create parental relationships and trigger events manually?

推荐答案

与大多数 Backbone.js 一样,你不会得到正确"的答案,但我可以分享我是如何做到的.对于模型和视图,我通常遵循以下准则:

As with most things Backbone.js, you won't get a "right" answer to this, but I can share how I do it. With both models and views, I generally follow these guidelines:

  • 视图和模型应该由对它们负责"的组件实例化.对于具有明确父子关系的模型或视图,父模型应该实例化,通常在 initialize() 方法中.

父母应该在实例化时绑定到子事件.

Parents should bind to child events at the time of instantiation.

父母应该意识到"孩子,并且可以在必要时调用子方法 - 我通常会使用此方法而不是触发子事件,因为它更明确.我试图让孩子们独立于他们的父母,通过事件向上沟通.所以是的,深度嵌套的模型将通过事件链进行通信.

Parents should be "aware" of children, and can call child methods if necessary - I'd usually use this method over triggering a child event, as it's more explicit. I try to keep children independent of their parents, communicating upwards through events. So yes, deeply nested models would communicate through event chains.

我有时将 .set() 子属性作为 Backbone 属性,但通常只使用普通的 Javascript 属性(例如 this.child).这取决于上下文.使用 Backbone 属性提供 change 事件,因此如果您需要监视子项是否更改,请使用它们.骨干属性还使您能够在实例化时进行设置,例如var myModel = new Model({ other: otherModel }) - 但是因为父母通常会实例化他们的孩子,所以这并不真正适用于这种情况,我通常将该模式用于非分层模型 -模型关系.在大多数情况下,我将孩子设置为纯 Javascript 属性.

I sometimes .set() children as Backbone attributes, but usually just use plain Javascript attributes (e.g. this.child). It depends on the context. Using Backbone attributes provides change events, so if you need to monitor whether a child changes, use those. Backbone attributes also give you the ability to set at instantiation time, e.g. var myModel = new Model({ other: otherModel }) - but because parents usually instantiate their children, this doesn't really apply in that case, and I usually use that pattern for non-hierarchical model-model relationships. In most cases, I set children as plain Javascript attributes.

这篇关于让模型听嵌套模型和集合的最佳模式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

js删除数组中指定元素的5种方法
在JavaScript中,我们有多种方法可以删除数组中的指定元素。以下给出了5种常见的方法并提供了相应的代码示例: 1.使用splice()方法: let array = [0, 1, 2, 3, 4, 5];let index = array.indexOf(2);if (index -1) { array.splice(index, 1);}// array = [0,...
2024-11-22 前端开发问题
182

JavaScript小数运算出现多位的解决办法
在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会...
2024-10-18 前端开发问题
301

JavaScript(js)文件字符串中丢失"\"斜线的解决方法
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转...
2024-10-17 前端开发问题
437

layui中table列表 增加属性 edit="date",不生效怎么办?
如果你想在 layui 的 table 列表中增加 edit=date 属性但不生效,可能是以下问题导致的: 1. 缺少日期组件的初始化 如果想在表格中使用日期组件,需要在页面中引入 layui 的日期组件,并初始化: script type="text/javascript" src="/layui/layui.js"/scrip...
2024-06-11 前端开发问题
455

Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)...
2024-04-20 前端开发问题
5

“数组中的每个孩子都应该有一个唯一的 key prop"仅在第一次呈现页面时
quot;Each child in an array should have a unique key propquot; only on first time render of page(“数组中的每个孩子都应该有一个唯一的 key prop仅在第一次呈现页面时)...
2024-04-20 前端开发问题
5