如何将第三方事件绑定到可观察的rxjs

duxfox--

我在项目中使用了名为froala的第三方文本编辑器,对于keyup事件,我必须传递一个回调函数,以便可以从编辑器中获取值。我试图以某种方式将回调函数包装起来,以便可以使用,debounceTime但无法正常工作,下面是一些代码:

在我的组件文件中:

export class EditorComponent
  editorOptions = {
    events: {
      'froalaEditor.keyup': (e, editor) => {
        do stuff here
      },
    }
  };
}

我尝试将其用于keyup事件,但由于它为每个事件设置了一个新的可观察对象,因此无法正常工作:

'froalaEditor.keyup': (e, editor) => {
  const text = editor.html.get();
  Observable.create(o => {
    this.service.updateData(data);
  }).pipe(takeUntil(this.ngUnsubscribe))
    .pipe(debounceTime(1000))
    .subscribe();
}

什么是使这项工作正确的方法?

科斯

您可以创建一个独立的Subject并将值推入其中,例如:

export class EditorComponent
  private onKeyup$ = new Subject();

  editorOptions = {
    events: {
      'froalaEditor.keyup': (e, editor) => {
        onKeyup$.next(e);
      },
    }
  };
}

重要提示:在这种情况下,您必须自己关心订阅的完成。在特定框架的组件中搜索适当的,可观察到的完成。

要么

如果您有对编辑器DOM节点的引用,则可以fromEvent在froala事件上使用froalaEditor.keyup(请参阅froala docs)。

例如

const onKeyup$ = fromEvent(froalaDOMNode, 'froalaEditor.keyup');

在这种情况下,一旦DOM节点被销毁,observable将完成,因此您不必担心手动取消订阅。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将第三方JAR打包到EJB jar中?

如何将第三方库导入到特定文件夹

如何将第三方库集成到10月的cms中?

如何将本机ios第三方库集成到React本机应用程序中?

如何将字段添加到第三方应用程序模型?

如何将Codeigniter中的sendgrid api库用作第三方库

如何将第三方库连接到Angular 4以用作服务

如何将require转换为第三方库的导入声明?

如何将绒毛从第三方库中剥离出来?

没有第三方工具,如何将.bat文件“转换”为.exe?

如何将第三方静态库与新创建的 cmake 项目链接?

如何将密码和帐户管理外包给第三方?

如何将第三方API结果插入Wordpress页面/内容?

如何将第三方库注入angular.js服务

如何将第三方 DLL 添加到 DockerFile?C#

如何将模板与第三方CSS库一起使用

如何将道具传递给第三方组件?

如何将第三方.NET dll添加到Xamarin Forms

如何将第三方依赖项javascript添加到Shopware 6

如何将第三方bean自动连接到我的@Controller bean

如何将第三方类加载到我的cakephp项目中?

如何将第三方Javascript文件“导入”到IntelliJ中,以便我可以在Typescript文件中引用它

Xamarin.Android与依赖项绑定到第三方SDK

如何将业务逻辑重构为域实体中的第三方服务调用?

如何将第三方XMPP客户端连接到Cisco的Jabber Video?

ipdb如何将python调试器带到称为第三方代码的框架

如何将第三方JavaScript库添加到Meteor应用程序?

将第三方框架导入Xcode 6 –如何将其保存到项目中?

如何将特定的订单项数据发送到第三方脚本