当前位置: 首页 > 面试题库 >

angularjs-扩展递归

钱欣悦
2023-03-14
问题内容

我想扩展一些递归的属性(又名深度复制)。就像jQuery一样。我不只包括jquery一件事的b / c。

jQuery.extend( true, target, object1 )

您知道有什么优雅的方法可以使用简单的javascript或angularjs吗?

更新, 请看看并尝试完成相同的结果
http://plnkr.co/edit/GHabYbyhsqtfBPtplksO?p=preview

我确实调查了.copy()但“属性(对象)已删除”


问题答案:

这是一个基于angular.extend函数的extendDeep函数。如果将其添加到$ scope中,则可以调用

$scope.meta = $scope.extendDeep(ajaxResponse1.myMeta, ajaxResponse2.defaultMeta);

并找到您想要的答案。

$scope.extendDeep = function extendDeep(dst) {
  angular.forEach(arguments, function(obj) {
    if (obj !== dst) {
      angular.forEach(obj, function(value, key) {
        if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {
          extendDeep(dst[key], value);
        } else {
          dst[key] = value;
        }     
      });   
    }
  });
  return dst;
};

注意:此函数具有将值从后面的参数复制到前面的参数的副作用。要对此副作用进行简单的修复,可以更改dst[key] = valuedst[key] = angular.copy(value)



 类似资料:
  • 问题内容: 我想知道是否有可能扩展Angular的输入指令?我想将一些侦听器附加到页面上的所有输入字段。我认为您可以使用来装饰现有模块,但我不知道如何使用指令(更确切地说是输入指令)来完成此操作。 那么,谁能将我推向正确的方向呢?一些例子? 编辑 到目前为止,这是我的指令: 在我看来,可以将其添加到输入字段中,如下所示: 缺点是,对于每个输入字段,我都必须在代码中手动附加此侦听器。因此,更改现有的

  • 问题内容: 如何扩展结构定义以显示嵌套类型?例如,我想扩展这个 像这样: 上下文:对现有代码进行逆向工程。 问题答案: 您可以尝试按照以下方式进行操作,以列出结构中定义的所有字段,然后递归列出以这种方式找到的结构。 它不能完全产生您所要求的输出,但是非常接近,并且可以进行调整。 由于上述原因,我得到了此输出:

  • 扩展是专门设计的在 Yii 应用中随时可拿来使用的, 并可重发布的软件包。例如, yiisoft/yii2-debug 扩展在你的应用的每个页面底部添加一个方便用于调试的工具栏, 帮助你简单地抓取页面生成的情况。 你可以使用扩展来加速你的开发过程。 信息: 本文中我们使用的术语 "扩展" 特指 Yii 软件包。而用术语 "软件包" 和 "库" 指代非 Yii 专用的通常意义上的软件包。 使用扩展

  • vscode-react-native vscode-go

  • 扩展为现有的类、结构体、枚举类型、或协议添加了新功能。这也包括了为无访问权限的源代码扩展类型的能力(即所谓的逆向建模)。扩展和 Objective-C 中的分类类似。(与 Objective-C 的分类不同的是,Swift 的扩展没有名字。) Swift 中的扩展可以: 添加计算实例属性和计算类型属性; 定义实例方法和类型方法; 提供新初始化器; 定义下标; 定义和使用新内嵌类型; 使现有的类型遵

  • 概述 范例-hello-world 范例-word-count 范例-language-server 范例-调试器 调试-扩展 安装-扩展 范式-原则 测试-扩展 用我们的方法创造扩展