mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-02-07 04:55:37 +00:00
36 lines
26 KiB
JavaScript
36 lines
26 KiB
JavaScript
import{ax as i,z as a,A as t,b2 as e}from"./chunks/framework.DkLJC2NO.js";const c=JSON.parse('{"title":"DataSourceManager","description":"","frontmatter":{},"headers":[],"relativePath":"runtime-api/data-source/dataSourceManager.md","filePath":"runtime-api/data-source/dataSourceManager.md"}'),l={name:"runtime-api/data-source/dataSourceManager.md"};function n(p,s,d,h,o,r){return t(),a("div",null,[...s[0]||(s[0]=[e(`<h1 id="datasourcemanager" tabindex="-1">DataSourceManager <a class="header-anchor" href="#datasourcemanager" aria-label="Permalink to "DataSourceManager""></a></h1><p><code>DataSourceManager</code> 是 <code>@tmagic/data-source</code> 的核心类,用于管理所有数据源的生命周期、数据编译和事件分发。</p><h2 id="构造函数" tabindex="-1">构造函数 <a class="header-anchor" href="#构造函数" aria-label="Permalink to "构造函数""></a></h2><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DataSourceManager</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(options: DataSourceManagerOptions)</span></span></code></pre></div><h3 id="datasourcemanageroptions" tabindex="-1">DataSourceManagerOptions <a class="header-anchor" href="#datasourcemanageroptions" aria-label="Permalink to "DataSourceManagerOptions""></a></h3><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td><code>app</code></td><td><code>TMagicApp</code></td><td>应用实例</td></tr><tr><td><code>initialData</code></td><td><code>DataSourceManagerData</code></td><td>初始数据(可选,用于 SSR)</td></tr><tr><td><code>useMock</code></td><td><code>boolean</code></td><td>是否使用 Mock 数据(可选)</td></tr></tbody></table><h2 id="属性" tabindex="-1">属性 <a class="header-anchor" href="#属性" aria-label="Permalink to "属性""></a></h2><table tabindex="0"><thead><tr><th>属性</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td><code>app</code></td><td><code>TMagicApp</code></td><td>应用实例</td></tr><tr><td><code>dataSourceMap</code></td><td><code>Map<string, DataSource></code></td><td>数据源映射表</td></tr><tr><td><code>data</code></td><td><code>DataSourceManagerData</code></td><td>所有数据源的数据</td></tr><tr><td><code>initialData</code></td><td><code>DataSourceManagerData</code></td><td>初始化数据</td></tr><tr><td><code>useMock</code></td><td><code>boolean</code></td><td>是否使用 Mock 数据</td></tr></tbody></table><h2 id="静态方法" tabindex="-1">静态方法 <a class="header-anchor" href="#静态方法" aria-label="Permalink to "静态方法""></a></h2><h3 id="register" tabindex="-1">register <a class="header-anchor" href="#register" aria-label="Permalink to "register""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{string} type</code> 数据源类型</li><li><code>{typeof DataSource} dataSourceClass</code> 数据源类</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>注册自定义数据源类型。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { DataSourceManager } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '@tmagic/data-source'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> CustomDataSource</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DataSource</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // 自定义实现</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">DataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">register</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'custom'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, CustomDataSource);</span></span></code></pre></div><h3 id="getdatasourceclass" tabindex="-1">getDataSourceClass <a class="header-anchor" href="#getdatasourceclass" aria-label="Permalink to "getDataSourceClass""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{string} type</code> 数据源类型</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{typeof DataSource | undefined}</code></li></ul></li><li><p><strong>详情:</strong></p><p>获取已注册的数据源类。</p></li></ul><h3 id="cleardatasourceclass" tabindex="-1">clearDataSourceClass <a class="header-anchor" href="#cleardatasourceclass" aria-label="Permalink to "clearDataSourceClass""></a></h3><ul><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>清除所有已注册的数据源类(保留 <code>base</code> 和 <code>http</code>)。</p></li></ul><h3 id="registerobserveddata" tabindex="-1">registerObservedData <a class="header-anchor" href="#registerobserveddata" aria-label="Permalink to "registerObservedData""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{ObservedDataClass} observedDataClass</code> 观察者数据类</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>注册自定义的观察者数据类。</p></li></ul><h2 id="实例方法" tabindex="-1">实例方法 <a class="header-anchor" href="#实例方法" aria-label="Permalink to "实例方法""></a></h2><h3 id="init" tabindex="-1">init <a class="header-anchor" href="#init" aria-label="Permalink to "init""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{DataSourceSchema[]} ds</code> 数据源配置数组</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{Promise<void>}</code></li></ul></li><li><p><strong>详情:</strong></p><p>初始化数据源,会创建所有配置的数据源实例并初始化。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">init</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">([</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ds_1'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'base'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fields: [{ name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'count'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, defaultValue: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }]</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'http_1'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'http'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> options: { url: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/api/data'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]);</span></span></code></pre></div><h3 id="get" tabindex="-1">get <a class="header-anchor" href="#get" aria-label="Permalink to "get""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{string} id</code> 数据源 ID</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{DataSource | undefined}</code></li></ul></li><li><p><strong>详情:</strong></p><p>获取指定 ID 的数据源实例。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ds</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ds_1'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span></code></pre></div><h3 id="adddatasource" tabindex="-1">addDataSource <a class="header-anchor" href="#adddatasource" aria-label="Permalink to "addDataSource""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{DataSourceSchema} config</code> 数据源配置</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{DataSource}</code></li></ul></li><li><p><strong>详情:</strong></p><p>添加新的数据源。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ds</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addDataSource</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'new_ds'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'base'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fields: []</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><h3 id="removedatasource" tabindex="-1">removeDataSource <a class="header-anchor" href="#removedatasource" aria-label="Permalink to "removeDataSource""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{string} id</code> 数据源 ID</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>移除指定的数据源。</p></li></ul><h3 id="setdata" tabindex="-1">setData <a class="header-anchor" href="#setdata" aria-label="Permalink to "setData""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{DataSourceSchema} ds</code> 数据源配置</li><li><code>{ChangeEvent} changeEvent</code> 变化事件(可选)</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>设置数据源数据。</p></li></ul><h3 id="updateschema" tabindex="-1">updateSchema <a class="header-anchor" href="#updateschema" aria-label="Permalink to "updateSchema""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{DataSourceSchema[]} schemas</code> 数据源配置数组</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{Promise<void>}</code></li></ul></li><li><p><strong>详情:</strong></p><p>更新数据源 DSL 配置,会自动处理新增、更新和删除。</p></li></ul><h3 id="compilednode" tabindex="-1">compiledNode <a class="header-anchor" href="#compilednode" aria-label="Permalink to "compiledNode""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{MNode} node</code> 节点配置</li><li><code>{string} sourceId</code> 数据源 ID(可选)</li><li><code>{boolean} deep</code> 是否深度编译(可选)</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{MNode}</code></li></ul></li><li><p><strong>详情:</strong></p><p>编译节点 DSL 中的数据源配置,将数据源引用替换为实际值。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> compiledNode</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">compiledNode</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">({</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'text_1'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> type: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'\${ds_1.username}'</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// compiledNode.text 会被替换为实际的用户名</span></span></code></pre></div><h3 id="compliedconds" tabindex="-1">compliedConds <a class="header-anchor" href="#compliedconds" aria-label="Permalink to "compliedConds""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{MNode} node</code> 节点配置</li><li><code>{object} data</code> 数据上下文(可选)</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{boolean}</code></li></ul></li><li><p><strong>详情:</strong></p><p>编译显示条件,返回节点是否应该显示。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> shouldShow</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">compliedConds</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(node);</span></span></code></pre></div><h3 id="compliediteratoritemconds" tabindex="-1">compliedIteratorItemConds <a class="header-anchor" href="#compliediteratoritemconds" aria-label="Permalink to "compliedIteratorItemConds""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{object} itemData</code> 迭代项数据</li><li><code>{MNode} node</code> 节点配置</li><li><code>{string} field</code> 条件字段名</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{boolean}</code></li></ul></li><li><p><strong>详情:</strong></p><p>编译迭代器项的显示条件。</p></li></ul><h3 id="compliediteratoritems" tabindex="-1">compliedIteratorItems <a class="header-anchor" href="#compliediteratoritems" aria-label="Permalink to "compliedIteratorItems""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{object} itemData</code> 迭代项数据</li><li><code>{MNode[]} nodes</code> 节点配置数组</li><li><code>{string} field</code> 字段名</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{MNode[]}</code></li></ul></li><li><p><strong>详情:</strong></p><p>编译迭代器项的节点配置。</p></li></ul><h3 id="ondatachange" tabindex="-1">onDataChange <a class="header-anchor" href="#ondatachange" aria-label="Permalink to "onDataChange""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{string} id</code> 数据源 ID</li><li><code>{string} path</code> 数据路径</li><li><code>{Function} callback</code> 回调函数</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>监听数据源数据变化。</p></li><li><p><strong>示例:</strong></p></li></ul><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">onDataChange</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ds_1'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'user.name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">newVal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'用户名变更:'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, newVal);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div><h3 id="offdatachange" tabindex="-1">offDataChange <a class="header-anchor" href="#offdatachange" aria-label="Permalink to "offDataChange""></a></h3><ul><li><p><strong>参数:</strong></p><ul><li><code>{string} id</code> 数据源 ID</li><li><code>{string} path</code> 数据路径</li><li><code>{Function} callback</code> 回调函数</li></ul></li><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>取消监听数据源数据变化。</p></li></ul><h3 id="destroy" tabindex="-1">destroy <a class="header-anchor" href="#destroy" aria-label="Permalink to "destroy""></a></h3><ul><li><p><strong>返回:</strong></p><ul><li><code>{void}</code></li></ul></li><li><p><strong>详情:</strong></p><p>销毁数据源管理器,清理所有数据源。</p></li></ul><h2 id="事件" tabindex="-1">事件 <a class="header-anchor" href="#事件" aria-label="Permalink to "事件""></a></h2><p>DataSourceManager 继承自 EventEmitter,支持以下事件:</p><table tabindex="0"><thead><tr><th>事件名</th><th>说明</th><th>回调参数</th></tr></thead><tbody><tr><td><code>change</code></td><td>数据源数据变化</td><td><code>(dsId, path, newVal)</code></td></tr><tr><td><code>init</code></td><td>所有数据源初始化完成</td><td>无</td></tr><tr><td><code>registered-all</code></td><td>所有数据源注册完成</td><td>无</td></tr><tr><td><code>update-data</code></td><td>更新节点数据</td><td><code>(node, sourceId)</code></td></tr></tbody></table><h3 id="事件监听示例" tabindex="-1">事件监听示例 <a class="header-anchor" href="#事件监听示例" aria-label="Permalink to "事件监听示例""></a></h3><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'change'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">dsId</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">path</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">newVal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">\`数据源 \${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">dsId</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">} 的 \${</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">path</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">} 变更为:\`</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, newVal);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">dataSourceManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">on</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'init'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> console.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">log</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'所有数据源初始化完成'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">});</span></span></code></pre></div>`,56)])])}const g=i(l,[["render",n]]);export{c as __pageData,g as default};
|