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

如何在多个控制器中重用功能

谢英耀
2023-03-14
问题内容

我有多个路线的多个控制器:

app.controller('FirstController', function ($scope) {
  $scope.func = function () {
    console.log('route 1');
  }
}
app.controller('SecondController', function ($scope) {
  $scope.func = function () {
    console.log('route 2');
  }
}
...

和使用的伪指令,通过$scope.func这种方式:

app.directive('thedirective', function () {
  return {
    link: function (scope, $element, attrs) {
      $scope.func(attrs.thedirective);
    }
  }
});

$scope.func每个控制器都不同。我希望$ scope.func在route1中时会记录“ route
1”,而FirstController是当前控制器,而在Route 2中时会记录“ route 2”,但在控制台中只有“ rout
1”。您能否告诉我为什么更改路径不会更改$ scope指令?


问题答案:

孤立范围 是我用来重用一个函数的方法,该函数的定义不同是多个控制器。
根据文档,当您隔离指令的范围时,例如:

scope: {
  myIsolatedFunc: '='
}

Angular将查找当前范围以获取一个名为myIsolatedFuncelement 的属性值的属性。意思是:

如果您有一个名为的函数$scope.func1和一个定义为的元素:

<div myIsolatedFunc="func1">

在与另一个控制器一起的另 一条路线中 ,类似的功能$scope.func2以及定义为的元素:

<div myIsolatedFunc="func2">

您可以在指令中使用这两个功能:

app.directive('thedirective', function () {
  return {
    scope: {
      myIsolatedFunc: '='
    },
    link: function (scope, $element, attrs) {
      $scope.myIsolatedFunc(attrs.thedirective);
    }
  }
});

更不用说对于不同的功能,不必使用不同的名称。



 类似资料:
  • 问题内容: 我正在尝试将控制器拆分为多个文件,但是当我尝试在模块中注册它们时出现错误: 组控制器咖啡 usercontroller.coffee 错误 错误:参数’GroupController’不是函数,未定义 从文档中,我并没有真正获得模块方法的功能。它是否用密钥“ Webchat”存储我的控制器? 编辑: 似乎[]传递也会创建一个新模块并覆盖前一个模块 为避免这种情况,您必须忽略[] 问题答

  • 现在,我从Visual Studio 2015提供的默认ASP.NET核心Web应用程序项目模板开始,包括对单个用户帐户的身份验证。 大多数(如果不是所有)生成的控制器都返回视图,通常遵循以下模式: 此方法返回一个您可以看到的视图,当web客户机请求时,一切都很好。但是如果游戏正在向相同的方法发送请求呢?在这种情况下,需要一个JSON响应(不是view/html文档),我的问题是在ASP.NET核

  • 问题内容: 使用SceneBuilder。我有2个阶段,每个阶段都有一个控制器: , 。 Stage1Controller: Stage2Controller: 这是使用2种方法 (称为in 方法)将这两个fxml文件加载到Main.java类中的方式: 该方法在第一阶段中用作方法,它在两个阶段都转换视图。 如何输入方法?谢谢 问题答案: “快速又脏”的方法是给的引用: 现在在您的主应用程序中:

  • 问题内容: 如何从网页的任何位置(控制器组件外部)调用控制器下定义的函数? 当我按下“获取”按钮时,它可以完美运行。但是我需要从div控制器外部调用它。逻辑是:默认情况下,我的div是隐藏的。在导航菜单中的某个位置,我按了一个按钮,它应该显示()我的div并执行“获取”功能。我该如何实现? 我的网页是: 我的js: 问题答案: 这是从外部调用控制器功能的一种方法: 您的控制器的功能在哪里。 你可以

  • 问题内容: 我正在尝试建立一个视图-我设置了两个控制器进行练习,一个是HeaderCtrl,其中包含一些数据(网站标题,标题背景等),另一个应该具有页面的主要内容- MainCtrl。 在定义路线时,我这样做是: 这工作得很好,但是我想要为此指定多个参数,如下所示: 这行不通,所以我猜这不是做到这一点的方法。我实际上要问的是-您可以在$ routeProvider中指定多个控制器吗?还是构建此视图

  • 我试图实现的是通过@foreach发布所有新闻,并在@foreach-do-other@foreach之间发布所有带有新闻帖子ID的评论。 我不确定如何将此ID传递给getNews评论函数。 我的控制器: 路线: 新闻模式: 注释模型: 看法 错误: 未定义变量:newsComments(视图:C:\xampp\htdocs\resources\views\index.blade.php)