@@ -288,8 +288,8 @@ export class DocumentModel implements IPublicModelDocumentModel {
288288 * 当前 document 的节点显隐状态变更事件
289289 * @param fn
290290 */
291- onChangeNodeVisible ( fn : ( node : IPublicModelNode , visible : boolean ) => void ) : void {
292- this [ documentSymbol ] . onChangeNodeVisible ( ( node : IPublicModelNode , visible : boolean ) => {
291+ onChangeNodeVisible ( fn : ( node : IPublicModelNode , visible : boolean ) => void ) : IPublicTypeDisposable {
292+ return this [ documentSymbol ] . onChangeNodeVisible ( ( node : IPublicModelNode , visible : boolean ) => {
293293 fn ( ShellNode . create ( node ) ! , visible ) ;
294294 } ) ;
295295 }
@@ -298,8 +298,8 @@ export class DocumentModel implements IPublicModelDocumentModel {
298298 * 当前 document 的节点 children 变更事件
299299 * @param fn
300300 */
301- onChangeNodeChildren ( fn : ( info : IPublicTypeOnChangeOptions ) => void ) : void {
302- this [ documentSymbol ] . onChangeNodeChildren ( ( info ?: IPublicTypeOnChangeOptions ) => {
301+ onChangeNodeChildren ( fn : ( info : IPublicTypeOnChangeOptions ) => void ) : IPublicTypeDisposable {
302+ return this [ documentSymbol ] . onChangeNodeChildren ( ( info ?: IPublicTypeOnChangeOptions ) => {
303303 if ( ! info ) {
304304 return ;
305305 }
@@ -314,19 +314,27 @@ export class DocumentModel implements IPublicModelDocumentModel {
314314 * 当前 document 节点属性修改事件
315315 * @param fn
316316 */
317- onChangeNodeProp ( fn : ( info : IPublicTypePropChangeOptions ) => void ) : void {
317+ onChangeNodeProp ( fn : ( info : IPublicTypePropChangeOptions ) => void ) : IPublicTypeDisposable {
318+ const callback = ( info : GlobalEvent . Node . Prop . ChangeOptions ) => {
319+ fn ( {
320+ key : info . key ,
321+ oldValue : info . oldValue ,
322+ newValue : info . newValue ,
323+ prop : ShellProp . create ( info . prop ) ! ,
324+ node : ShellNode . create ( info . node as any ) ! ,
325+ } ) ;
326+ } ;
318327 this [ editorSymbol ] . on (
319328 GlobalEvent . Node . Prop . InnerChange ,
320- ( info : GlobalEvent . Node . Prop . ChangeOptions ) => {
321- fn ( {
322- key : info . key ,
323- oldValue : info . oldValue ,
324- newValue : info . newValue ,
325- prop : ShellProp . create ( info . prop ) ! ,
326- node : ShellNode . create ( info . node as any ) ! ,
327- } ) ;
328- } ,
329+ callback ,
329330 ) ;
331+
332+ return ( ) => {
333+ this [ editorSymbol ] . off (
334+ GlobalEvent . Node . Prop . InnerChange ,
335+ callback ,
336+ ) ;
337+ } ;
330338 }
331339
332340 /**
0 commit comments