javascript - 数据绑定在哪里属于单页应用程序(JS 和 HTML)
问题描述
我正在尝试编写自己的数据绑定代码,主要是作为一种学习经验,所以我确切地知道发生了什么。应该在哪里指定数据绑定的相关细节?我见过两种方法。
A) 在 HTML 元素上指定自定义数据属性,以指示绑定目标、属性、正在绑定的元素属性等。像这样:
<input type="text" data-model="myState" data-attr="value:title" data-events="keyup" />
data-model指定要绑定的JS对象,attr是元素属性和对象属性,events是应该触发绑定的事件。然后 JS 代码可以根据这些属性自动识别和添加侦听器。
这是我最初基于以下代码的示例:
https://stackblitz.com/edit/two-way-data-binding-poc
B)我看到的另一种方法是从JS端进行数据绑定,并使用元素ID,使用JS代码指定侦听器和属性。这意味着 HTML 只需要一个 ID,其他一切都在 JS 中指定。如果我正确理解代码,我认为这个 SO QA 属于这种类型:
这两个概念(我一般假设数据绑定)都需要知道要绑定的对象、UI 元素和属性。在 UI 代码 (A) 或 JS 代码 (B) 中这样做更好吗?
或者,A 和 B 在不同情况下是否同样有效?这是针对单页应用的,我打算直接在服务器上存储尽可能多的状态信息,并使用JS来处理动态交互。
经过一些额外的思考,A 的一个好处是您可以在仅更新 UI 代码的同时更改绑定状态的可视化。选项 B 需要同时修改 UI 代码和 JS 代码以添加或更改元素。
解决方案
我只在有一些 JS 挂钩的 HTML/CSS 库上见过实现 A。
例如,Zurb's Foundation 似乎将其用于他们的“Sticky”插件。
但我会使用久经考验的路线,然后选择:
B)我看到的另一种方法是从JS端进行数据绑定,并使用元素ID,使用JS代码指定侦听器和属性。这意味着 HTML 只需要一个 ID,其他一切都在 JS 中指定。如果我正确理解代码...
$('#someid').val(valuehere,codehere,anything);
推荐阅读
- oracle - Oracle 12.2 中的标识符太长问题
- android - 将可绘制对象设置为背景以查看返回未找到可绘制对象
- javascript - JavaScript 严重错误 - SCRIPT1004:应为“;”
- python - 使用 Python 正则表达式提取 javascript 变量
- javascript - 如何在本机反应中设置固定菜单大小?
- javascript - 我将如何将 JSON 数据嵌入到我的 HTML 文件中?
- python - 如何在 Pyspark 中过滤到最大日期?
- github - 我的分支的不同颜色是 gitHub 是什么意思?
- javascript - 遍历 JSON 数组中以特定键名开头的键
- django - Django中相关的两个字段