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

Angular.js最佳实践-扩展控制器,覆盖控制器默认值

邢焱
2023-03-14
问题内容

这是一个现实的Angular问题,我无法解决。我喜欢Angular,但是这个问题现在困扰着我很多。

扩展现有控制器功能,并在应用程序的另一页上使用扩展控制器的最佳实践是什么?换句话说: 如何在Angular中继承控制器?

编辑 -2014年9月23日,不要以为我的原始用例的描述会帮助访问者更好地理解我在这里的用意。我认为这使人们偏离了真正的问题。


问题答案:

半年后,我想我完全了解发生了什么。正如对这篇文章的评论中指出的那样,最简单的答案是服务。

在最佳情况下,所有范围变量都是从工厂/服务收集的值。不过,您可能仍想使用具有一个额外功能的完全相同的控制器:$
scope.someFunction(){},并保留其余功能。在这种情况下,您确实有一个“薄”的控制器逻辑,这是理想的控制器设计-
但可能仍然会导致一百或更多行代码。您不希望在其他控制器中重复该操作,只是因为您需要一些额外的控制器逻辑(例如$ scope.someFunction())

那你怎么办呢?

答案是这样的:

  1. 确保您已尽力解决工厂问题
  2. 如果绝对确定已完成,请进行控制器注入:
        .controller('childController', function ($scope, $controller) {
      'use strict';
      $controller('parentController', {$scope: $scope});
      $scope.someFunction=function(){}
    })

就这么简单。-同样,通常情况下,工厂可以解决问题。

希望你觉得这个有用 ;)



 类似资料:
  • 提交对映改动 一次提交要包括一个相关改动。例如,对于两个错误的修复应该进行两次不同的提交。精简的提交可以让其他的开发团队人员更简单地明白其改动的用义。如果其中一次提交的改动出现了问题,也可以方便地回滚到改动之前的状态。借助暂存功能来标记相关的改动文件,Git 可以为你打造出非常精准的提交。 频繁地提交改动 经常性地提交改动可以确保不会出现特别庞大的提交,同时也可以比较精准地对应到所需要的改动上。此

  • 如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过"MY_*.php"的形式进行二次开发。 例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php" MY_index.php代码如下: class MY_index extends index{ function __con

  • CRUD代表创建,读取,更新,删除。这是四种方法(如果区分查看一个记录和查看所有记录,则是五种方法)。在Rails中,处理CRUD的规范方法似乎包括七种方法。例如,使用 速记法为Order对象创建路由会生成以下七条路由: 这就是我困惑的根源。为 和 设置单独的操作/路由有什么意义?使用单独的操作查看页面和在数据库中创建记录有什么好处?我理解它是如何在Rails中实现的,例如: 在使用Rails之前

  • 在我的Play web应用程序中,我使用的是从未来获取结果。有没有其他更好的方法(使用最佳实践)从数据库中获得结果?如果我使用或我的控制器完成执行,结果还不在中。下面是我的控制器方法。一切正常,但我需要在Scala中遵循更多的最佳实践。 编辑:我已经在使用。但在这个例子中,我不能使用,基本上是因为。我想在验证json之前,我需要一个来包围该方法的所有代码。 使用平面地图和map的新方法。我的问题是

  • > 我有两个控制器(ControllerA和ControllerB) 两个控制器都调用一个服务(MyService)。 MyService调用名为MyRepository的接口,该接口有两个实现(FirstRepository和SecondRepository)。 如何可能在从ControllerA调用服务(MyService)时使用FirstRepository而在调用来自ControllerB

  • 问题内容: 我刚刚开始学习Angular.js,并且一直在Angular主页上的“连接后端”示例中查看project.js。 我对控制器功能中的参数感到困惑: 这些控制器函数在routeProvider中调用,但未给出任何参数。 我能找到到目前为止,这可能解释发生了什么事情的唯一的事情是“注入服务整合到控制器”,这说明,而不是参数的方法和。 我的具体问题是: 控制器参数是什么? 带有参数的控制器功