当前位置: 首页 > 知识库问答 >
问题:

更新数组后运行方法

缑赤岩
2023-03-14

我有一个从Firebase获取数据的服务。该服务提供了一个可观察的,然后我在组件类中订阅它。当数据被加载并发送到数组时,DOM会更新新数据,但是我需要在DOM更新后再次运行一些javascript和jQuery代码,我不知道如何运行。

我的服务方式是这样的:

getSubjects() {
    return new Observable(observer => {
      this.subjectsRef.orderByChild('name').on("value", snapshot => {
        var tempArr = [];
        snapshot.forEach(function(data) {
          var subject = {
            name: data.val().name,
            imgUrl: data.val().imgUrl,
            description: data.val().description,
            teachers: data.val().teachers
          }
          tempArr.push(subject);
        });
        observer.next(tempArr);
      });
    // this.broadcastUpdate();
  });
  }

和我的组件:

export class SubjectsCmp implements AfterViewInit, OnInit, OnChanges {

  constructor(
    private _subjectsService: SubjectsService
  ) {
  }

  ngOnInit() {
    this._subjectsService.getSubjects().subscribe( subjects => this.subjects = subjects);
  }
}

我看了一些RxJS的文档,但是没有用。我想我可以按照他们给出的例子重写它:

var subscription = source.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

但“完成”永远不会开火。

Angular 2的onChanges observer只响应由输入事件引起的更改,因此也不起作用。基本上,我只需要在填充数组后运行一个方法,我想我遗漏了一些明显的东西?

共有1个答案

白腾
2023-03-14

方法返回Subcriber,它继承可以使用的add()方法:

ngOnInit() {
  this._subjectsService.getSubjects()
    .subscribe( subjects => this.subjects = subjects)
    // add new subscription
    .add(() => console.log('Completed', this.subjects));
}
 类似资料:
  • 我之前使用的是旧版本的Android Studio(1.2.2),但我必须更新它,因为我在尝试在我的项目上添加FCM依赖项时遇到了一些错误。现在我已经更新了我的Android Studio(2.1.2)以及Google Repository和所有内容。现在我收到这些错误: 这是我的两个构建文件: 另一个: 从昨天开始,我一直在尝试使用FCM,但我不断收到错误和异常。

  • 我有一系列推车。我想更新请求对象中的产品数量。即。 我有一个数组的产品和数量,比如: 我想更新它们,如: 这可能的逻辑是什么?

  • 我有一个主要的方法,它应该从一个乐高机器人的数据绘制一个地图,主线程应该处理它从机器人获得的数据: } 如何从线程获取数据来更新GUI?

  • 我需要运行来安装laravelcollectives。运行之后,我得到: Connection.php第651行中的QueryException:SQLSTATE[42S22]:未找到列:1054字段“id”未知where子句(SQL:select*from users,其中id=4限制1) 以及: Connection.php319行中的PDO异常:SQLSTATE[42S22]:未找到列:10

  • 我不明白为什么不更新我的对象。在另一个组件中,我通过调度更新状态。在此情况下(在下面的代码中),mapStateToProps类别中的代码正在更改(控制台日志显示另一个类别)。但组件并没有重播,虽然在组件中我使用了道具。类别。事件控制台。登录元素未运行 我认为,如果我更新状态,则根据该状态更新组件。它应该如何工作?它应该如何工作?它可能很有用,添加类别的项不是父项或子项,而是邻居 谢谢你解决问题。

  • 问题内容: 我有一个pageLoad函数,该函数在无法更改的.ascx控件上设置一些CSS。在页面加载时,一切都很好,但是当更新面板更新控件时,不再应用我的CSS。页面更新后如何重新运行功能? 显然,这仅在初始页面加载时运行。更新后如何运行? 问题答案: 添加add_pageLoaded处理程序也可以。 注意:处理程序将为任何回调触发,但是您可以在需要调用函数时使用过滤器。