我正在查看适用于现有模型驱动系统的html数据绑定和模板替代方案。我保证我会接受下面的Angular问题,但如果没有某些背景,它将没什么意义。该数据具有以下属性:
- 系统中的JavaScript类反映了描述系统的事实模型(对象 - 角色模型),包括在模型和评估客户端中正式描述的任意派生规则。有一个轻量级框架允许使用最少的代码声明事实系统的声明。
- 所有数据管理(声明性客户端模型和规则,JSON通信,数据访问层,数据库)都是从同一模型生成的。
- 所有变更沟通(包括初始负载)都是根据“变更集”进行的。根据模型中的对象和事实描述。变更集可以共存,可以很大(自页面加载后所做的所有更改)或较小(在撤消/重做堆栈中跟踪单个用户操作)
- 客户端模型是一个完全可导航的图形结构,包含真实对象(不是无类型的JSON blob)。该结构旨在使用标准JavaScript进行读取,但所有对系统的写入都是通过基于模型元素的标准API完成的。
虽然我将它用于标准应用程序(我对数据绑定方面感兴趣),但该系统最初设计用于数据模型的客户端图形编辑,包括所有常用的编辑功能(实时验证,撤消/重做等)。这些应用程序可以100%运行在客户端,数据模型可能非常大。
在这种情况下,基于DOM更改(而反之亦然)更新范围数据的双向数据绑定的正常Angular方法过于简单化,违反了严格控制的数据模型背后的众多假设。
- UI控件可能无法直接更改数据。相反,控件更改会触发命名的命令'在系统中。每个命令都在跟踪代码下运行,该代码对数据进行一次或多次更改(通过框架API)并在系统中运行所有适用的派生。成功更改会生成撤消单元,失败的更改会自动回滚。
- 对系统的更改将干净地打包到更改对象中,这些更改对象对应于命令触发的更改(包括输入数据和任何派生的更改)。我不需要数据绑定系统来观察模型本身的变化,只需要一种方式来提供变更集。
现在谈到角度问题:
我可能完全走错了路,但我假设我需要使用某种自定义范围对象来处理$ watch,$ apply和$ digest功能,以允许Angular使用此数据模型来使用和更新应用程序。我正在寻找某种基于函数的方法,它允许绑定执行除直接字段访问之外的其他操作。
我确定我不是唯一想要将现有成熟数据结构集成到Angular系统中的人,而且我假设MVC实际上可以从其视图中分离数据正如模式名称所宣传的那样,但我还没有找到任何记录的样本来做这件事。任何指针都将非常感激。谢谢。