哪个是保持逻辑角度的最佳位置?

2024-03-05

我正在开发一个角度应用程序。假设当我们实现某个按钮的 onclick 等功能时,调用 api,处理数据,在表中显示结果。表数据应该跨页面保留(因此我们需要保持变量处于服务状态)。

为了实现,首先我们可以开始从模板调用函数,然后在组件中我们可以做一些检查,并调用服务来获取数据。一旦我们得到了数据,如果我们想要处理数据,那么处理数据的函数应该在组件或服务中?

我们可以在服务文件中编写逻辑吗?或者它应该在组件文件中?最佳做法是什么?

方法一:

 getApi() {
    this.http
      .get(url)
      .subscribe(response=> {
          this.afterFetchingProcessData(response); // this might be some function in service file
      },error=>{
          // handle error
      });
  }

  afterFetchingProcessData(response){
       //process the data and assign to variable 
       this.tabledata = response;
  }

或者我们应该遵循以下模式

方法2: 在组件文件中:

 getApi() {
      this.service.getApi().subscribe(response=> {
          this.afterFetchingProcessData(response); // this might be some function in service file
      },error=>{
          // handle error
      });
  }

  afterFetchingProcessData(response){
       //process the data and assign to variable 
       this.service.tabledata = response;
  }

在服务文件中只需调用 Api 并返回响应

 getApi() {
    return this.http
      .get(url);
  }

遵循方法 1 或方法 2 哪一个是最佳实践?为什么?


IMO 中,方法 2 是更好的选择。

我的看法是——

  • 成分- 包括表示层,并且应该专注于向用户呈现并从他那里获取输入
  • Services- 做所有其他事情

我会更进一步将服务分为:

  • 副作用服务- 负责例如API调用
  • 主要服务- 封装behavior应用程序的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪个是保持逻辑角度的最佳位置? 的相关文章

随机推荐

  • 使用枚举上的 XOR 运算符重载 GetHashCode 和相等运算符

    我有以下课程 它是统计分析包的一部分 The MetricKey对象用作字典键 Decision MetricUnit Portfolio都是枚举 我必须重写相等运算符 才能使字典键匹配工作 我使用了以下指导http msdn micros
  • “为‘System.Windows.Baml2006.TypeConverterMarkupExtension’提供值引发了异常。”行号“49”和行位置“38”

    我正在制作我的第一个 wpf 应用程序 它现在只是实现一个带有纹理的 地板 从上面看 运行时我得到这个异常 在 System Windows Baml2006 TypeConverterMarkupExtension 上提供值 引发异常 行
  • 如何在 GitHub 的文件查看器中软包装代码?

    当我在 GitHub com 上查看文本文件时 如何使其换行而不是水平滚动 在 GitHub 网站编辑器中 我可以从右上角的下拉菜单中选择 软换行 选项 但没有这样的下拉菜单 也没有我在页面上找到的任何选项 可以在查看时也换行代码 我尝试编
  • 加密和解密密码的最佳实践? (C#/.NET)

    我需要在 最好是文本 文件中存储和加密密码 稍后我需要能够解密该密码 该密码用于我使用的另一项服务 需要以明文形式 通过 SSL 发送到那里 这不是我能改变的 该领域的最佳实践是什么 如何才能在一定程度上保护密码免受恶意用户的侵害 我的平台
  • 如何在libavcodec中设置解码像素格式?

    我使用以下代码通过 libavcodec 解码视频 Open input file if avformat open input ctx filename NULL NULL 0 return FALSE Couldn t open fil
  • Angular 2 - 如何嵌入 youtube 视频

    我得到了这个代码 div div class video container div div 问题 角度将输出src localhost 8001 代替src https www youtube com embed hr4BbdUiTUM
  • 如何在 PHP 中使用 Postgresql 白名单和准备语句?

    我知道我需要在我的 php 代码中实现白名单和准备好的语句 但我不确定如何使用 Postgresql 执行此操作 这对我的代码来说真的有必要吗 我使用选择列表将用户选择的值传递给查询
  • UTF-8 和 ISO 8859-9

    在过去的几天里 我一直在阅读有关 UTF 8 和 unicode 的内容 当我以为我已经了解了这一切时 当我读到 UTF 8 和 ISO 8859 9 不兼容时 我感到很困惑 我有一个以 UTF 8 格式存储数据的数据库 客户要求我支持各种
  • C/C++ 中的梅尔频率倒谱系数 (MFCC)

    C C 中是否有 MFCC 的实现 有源代码或库吗 我已经找到了http code google com p libmfcc http code google com p libmfcc 这看起来不错 2016年回顾 libmfcc很简单
  • 从 Apache Spark 分段上传到 Amazon S3

    将数据保存到 Amazon S3 时 如何使 Apache Spark 使用分段上传 Spark使用以下方式写入数据RDD saveAs File方法 当目的地开始时s3n Spark 自动使用 JetS3Tt 进行上传 但对于大于 5G
  • 构建 OpenSSL x64 静态库时出现错误“错误 A2009:表达式中的语法错误”

    我需要 Openssl 的静态库 我按照以下指示进行操作here https stackoverflow com questions 158232 how do you compile openssl for x64 我所做的步骤如下 运行
  • 在 C# 中杀死除我的程序之外的所有进程

    不 这不是恶意软件 我正在尝试制作一个 PC 辅助工具来杀死所有非 Windows 进程的任务 但在此过程中 它会杀死自己 这是一个控制台应用程序 所以我尝试删除 cmd exe 来终止 但它仍然终止了我的程序 有类似这样的方法吗 if p
  • Scrapy 在爬行几页后停止爬行

    我刚刚学习了 Scrapy 和网站爬虫的基础知识 所以我非常感谢您的意见 我在教程的指导下 从 Scrapy 构建了一个简单明了的爬虫 它工作正常 但不会按应有的方式抓取所有页面 我的蜘蛛代码是 from scrapy spider imp
  • 在 C# 中声明固定大小数组的列表

    我有一个对像素进行操作的函数 我想创建一个包含 RGB 值的列表 但是当我这样声明时 List
  • 可靠地将包含 PHP 数组信息的字符串转换为数组 [重复]

    这个问题在这里已经有答案了 可能的重复 模拟 php 数组语言构造或使用正则表达式解析 https stackoverflow com questions 3267951 simulate php array language constr
  • BDE dbidorestruct 返回空表

    在我的 Delphi Sydney Win 10 应用程序中 我使用 BDE 即使在今天也是如此 当我更改 更改 删除字段时 我想修改其现有的 悖论 表 我发现了一个免费软件组件 TFieldUpdate v1 1 由 Nathanial
  • 你会推动每一个提交吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我希望有人能给我更多有关使用 git 和远程存储库的详细信息 我还没有使用过远程存储库 您向本地存储库提交较小的更改 这些更改可能不会太令人震惊
  • CMD 行判断文件/路径是本地还是远程?

    从 NT shell 脚本中 我需要能够判断目标路径是否位于本地驱动器上 例如C or D 或在远程 映射驱动器上 或者 UNC path或映射的驱动器盘符 例如Z 有什么建议么 echo off goto main isremote se
  • 如何更改 Android 的日期选择器样式

    我目前正在制作一份注册表 其中一个字段是用户的出生日期 我想使用日期选择器 但我不想要如下所示的日历布局 我希望布局看起来像这样 这样就可以更轻松地选择年份和月份 而无需滚动浏览所有内容 但是我不知道如何解决这个问题 也不知道在 style
  • 哪个是保持逻辑角度的最佳位置?

    我正在开发一个角度应用程序 假设当我们实现某个按钮的 onclick 等功能时 调用 api 处理数据 在表中显示结果 表数据应该跨页面保留 因此我们需要保持变量处于服务状态 为了实现 首先我们可以开始从模板调用函数 然后在组件中我们可以做