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

使用AngularJS中的“作用域”从另一个控制器调用一个控制器的方法

秦学林
2023-03-14
问题内容

我试图通过使用scope变量在第一控制器中调用第二控制器的方法。这是我的第一个控制器中的一种方法:

$scope.initRestId = function(){
        var catapp = document.getElementById('SecondApp');
        var catscope = angular.element(catapp).scope();
        catscope.rest_id = $scope.user.username;
        catscope.getMainCategories();
    };

我可以设置的值,rest_id但是getMainCategories由于某种原因我不能打电话。控制台显示此错误:

TypeError:对象#没有方法’getMainCategories’

有没有一种方法可以调用上述方法?

编辑:

我使用以下方法同时加载两个应用程序。

angular.bootstrap(document.getElementById('firstAppID'), ['firstApp']);
angular.bootstrap(document.getElementById('secondAppID'), ['secondApp']);

我肯定可以在这里使用服务,但我想知道是否还有其他选择可以这样做!


问题答案:

您在两个控制器之间进行通信的最佳方法是使用事件。

范围文件

在此签出$on$broadcast$emit

在一般情况下,的用法angular.element(catapp).scope()设计为在角度控制器外部使用,例如在jquery事件中使用。

理想情况下,您将在控制器1中编写一个事件,如下所示:

$scope.$on("myEvent", function (event, args) {
   $scope.rest_id = args.username;
   $scope.getMainCategories();
});

然后在第二个控制器中

$scope.initRestId = function(){
   $scope.$broadcast("myEvent", {username: $scope.user.username });
};

编辑:意识到这是两个模块之间的通信

您可以尝试将firstApp模块包含为secondApp声明的依赖吗angular.module?这样,您就可以与其他应用通信。



 类似资料:
  • 我想在单击该按钮时从interface_pasienController上的Interface_adminController调用autoRefresh()方法。但是有一个错误“java.lang.NullPointerException”。代码怎么了? 线程“JavaFX Application thread”java.lang.RuntimeException中的异常:java.lang.Re

  • 问题内容: 一个控制器可以使用另一个控制器吗? 例如: 该HTML文档仅在文件中打印由控制器传递的消息。 控制器文件包含以下代码: 它只是打印当前日期; 如果我要添加另一个控制器,它将特定格式的日期返回给,那么该怎么做呢?DI框架似乎与服务有关。 问题答案: 控制器之间有多种通信方式。 最好的一种可能是共享服务: 另一种方法是在范围内发出事件: 在这两种情况下,您都可以与任何指令进行通信。

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

  • 问题内容: 我需要在Angular js中的另一个控制器中调用函数。如何可能的方式请提前帮助我 代码: 问题答案: 控制器之间的通信通过+ / + 方法完成。 因此,在您的情况下,您想在Controller“Two”中调用Controller“One”的方法,执行此操作的正确方法是: 在被调用时,您可以发送任何数据作为第二个参数。

  • 问题内容: 一个控制器可以使用另一个控制器吗? 例如: 该HTML文档仅在文件中打印由控制器传递的消息。 控制器文件包含以下代码: 它只是打印当前日期; 如果我要添加另一个控制器,它将特定格式的日期返回给,那么该怎么做呢?DI框架似乎与服务有关。 问题答案: 控制器之间有多种通信方式。 最好的一种可能是共享服务: 另一种方法是在范围内发出事件: 在这两种情况下,您都可以与任何指令进行通信。

  • 问题内容: 我是Angular的新手,正在尝试弄清楚该怎么做… 使用AngularJS,如何注入要在另一个控制器中使用的控制器? 我有以下片段: 执行此操作时,出现错误: 我是否应该尝试在另一个控制器内部使用一个控制器,还是应该将此服务用作服务? 问题答案: 如果您打算掌握已经实例化的另一个组件的控制器,并且如果您遵循的是基于组件/指令的方法,则始终可以遵循某个层次结构的另一个组件中的控制器(一个