javascript - AngularJS:从另一个 Controller 或 JS 调用 Controller 更新功能

标签 javascript angularjs controller

我有一个 Controller 可以更新屏幕的一部分。有时,用户执行的操作会在服务器端使该区域显示的内容无效。那么,当用户在别处单击按钮时,我如何才能进行另一个 Controller 更新?对于此类事情,我遵循了通常的模式,即:

appControllers.controller('linksController', ['$scope', '$filter', '$interval', function ($scope, $filter, $interval) {

    $scope.update = function () {
        // update code here... this is what I want to invoke from another function or area of JS
    }

最佳答案

您可以为此使用共享服务/工厂。

如果你想将刚刚加载的数据从一个 Controller 传递到另一个 Controller ,你可以通过“共享服务”传递它,并使用 $broadcast/$emit 函数在其中广播事件。可以使用 $scope.$on 在任何 Controller 中收听广播事件。

   angular.module("appControllers", []).factory("sharedService", function($rootScope){

        var mySharedService = {};

        mySharedService.values = {};

        mySharedService.passData = function(newData){
            mySharedService.values = newData;
            $rootScope.$broadcast('dataPassed');
        }

        return mySharedService; 
   });

    appControllers.controller('linksController', ['$scope', 'sharedService', function ($scope, sharedService) {
       $scope.update = function(newData){
           sharedService.passData(newData);
       };
    }

   appControllers.controller('anotherController', ['$scope', 'sharedService', function ($scope, sharedService) {
       $scope.$on('dataPassed', function () {
          $scope.newItems = sharedService.values;
       });
   }

关于javascript - AngularJS:从另一个 Controller 或 JS 调用 Controller 更新功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27250646/

相关文章:

javascript - 如何使按钮在单击时改变颜色,然后在单击不同的按钮时变回原来的颜色?

javascript - angularjs - 表单和验证

javascript - 如何通过名称调用私有(private)函数

cakephp - 如何更改分页条件?

spring - 在 Spring MVC model.addAttribute() 方法中传递一个新对象

json - 无法将 json 数据输入 Controller , Controller 将 JSON 请求显示为空;

javascript - 使用 ng-repeat 和嵌套循环添加行

javascript - Flask:在整个应用程序中记住变量 + DOM 操作

javascript - 如何克隆 div jquery html

javascript - Angular ngRepeat - 如何拥有包含单选按钮的多个对象