angularjs - ng-click执行属于不同 Controller 的2个方法

标签 angularjs angularjs-directive angularjs-scope angularjs-ng-click angular-services

我有一个名为 PostControllerCommentController 的 Controller
PostController 具有函数 showPost
CommentController 具有函数 showComment
我想在单击按钮时执行这两个功能

<button href="#" ng-click="showPost();showComment()" class="btn">show</button>

如何在不指定嵌套 Controller 概念的情况下做到这一点

最佳答案

您可以通过使用服务/工厂来实现这一点。这是它应该如何工作的简单示例:

JS

var myApp = angular.module('myApp', []);

function CommentController($scope,  myStorage) {   
    $scope.myStorage = myStorage;

    $scope.showMe = function(){
      myStorage.setIndex(3);
    }
}

function PostController($scope,  myStorage) {   
    $scope.myStorage = myStorage;    
}


myApp.factory('myStorage', function () {

       var currentBusinessIndex = 0;

       return {
            getIndex: function () {                
               return currentBusinessIndex;
            },
           setIndex: function (index) {
               currentBusinessIndex = index;               
            }
        }
  });

HTML

<div ng-controller="CommentController">
    <button ng-click="showMe();">press  me</button>
    <pre>{{myStorage.getIndex()}}</pre>
</div>

<div ng-controller="PostController">
    <pre>{{myStorage.getIndex()}}</pre>
</div>

演示 Fiddle

此外,您可以使用$watch监视服务数据,以在任何数据更改时触发

关于angularjs - ng-click执行属于不同 Controller 的2个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20878277/

相关文章:

javascript - switch case 无法在 angularjs 中获得控制?

angularjs - 如何统计一个页面上的观看总数?

javascript - angularjs $location 和 window.history.pushState

javascript - Angular.js 客户端高度

javascript - 从 Date 我只想在 javascript/angularjs 中减去 1 天

angularjs - 如何在 Angular js中制作自定义指令或在指令中传递变量

javascript - AngularJS : Change URL, 但不是浏览器后退和前进按钮的 Controller 或模板加载

带有表达式的 AngularJS ng-disabled 指令不起作用

angularjs - 在我的 angularjs Controller 中获取 ng-change 字段的值

AngularJS $watch 在第一次更新后数组失败