mikeric / sightglass
可观察的关键路径引擎。
This package is not auto-updated.
Last update: 2024-09-14 17:32:08 UTC
README
可观察的关键路径引擎。通过定义适配器,方便构建自己的可组合关键路径。此模块最初是从Rivets.js数据绑定和模板库中提取出来的。
安装
使用 npm、component(1) 或 bower 安装(推荐)。
$ bower install sightglass
API
sightglass.adapters
在能够使用 sightglass 观察对象之前,你需要至少定义一个适配器来组合你的关键路径。适配器只是响应 observe、unobserve 和 get 的对象。在 sightglass.adapters 对象上的键是你在组合关键路径时使用的分隔符。
sightglass.adapters['.'] = {
observe: function(obj, key, callback) {},
unobserve: function(obj, key, callback) {},
get: function(obj, key) {},
set: function(obj, key, value) {}
}
sightglass.root
Sightglass 还需要了解默认的根适配器。这对于没有以适配器键开头的关键路径是必需的。例如,如果默认的根适配器设置为 .,那么关键路径 hello:world 将被解析为 .hello:world。
sightglass.root = '.'
sightglass(obj, keypath, callback, [options])
观察提供对象上的完整关键路径。每当关键路径的最终值发生变化时(这可能是关键路径中的任何中间对象发生变化,以及关键路径末尾的属性发生变化),都会调用回调函数。
sightglass(obj, 'user.address:city', function() {})
你可以可选地传入第四个参数来扩展默认选项。这里定义的适配器仅对观察者本地有效。所有全局定义的适配器也将对观察者可用,除非使用现有的分隔符键覆盖。
sightglass(obj, keypath, callback, {
root: ':',
adapters: {':': {
observe: function(obj, key, callback) {},
unobserve: function(obj, key, callback) {},
get: function(obj, key) {},
set: function(obj, key, value) {}
}}
})
返回一个 Observer 实例,你可以稍后保存(请参阅下文的 Observer API)。
Observer API
observer.value()
读取观察的关键路径的当前最终值。如果整个关键路径不可达,则返回 undefined。
observer.setValue()
设置观察对象尾部属性的值(关键路径的最后一段)。如果整个关键路径不可达时调用 setValue,则不执行任何操作。
observer.setValue('Vancouver')
observer.update()
重新计算整个关键路径,为每个键附加观察者或纠正关键路径中已更改的对象上的旧观察者。
如果你的适配器的 subscribe 函数实现得当,则此函数将在关键路径中的任何中间键更改时自动调用,因此你不需要调用此函数。但是,如果你的关键路径使用了不订阅更改的适配器,则需要在更改关键路径该段之后手动调用此函数。
observer.unobserve()
取消观察整个关键路径。
贡献
错误报告
- 确保错误可以在最新主分支上重现。
- 在 GitHub 上打开一个问题,并包括一个展示错误的隔离 JSFiddle 演示。你提供的信息越多,验证和修复就越容易。
拉取请求
- 叉取存储库并创建一个主题分支。
- 确保使用
[#1]或[Closes #1]将提交与其对应的 issue 关联,如果提交解决了 issue。 - 将更改推送到你的叉取,并通过解释和引用原始 issue(如果有的话)提交拉取请求。