2

我有一个名称为PostControllerCommentController
PostController的控制器具有功能showPost CommentController
具有功能showComment
我想在单击按钮时执行这两个功能

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

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

4

1 回答 1

3

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

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,以触发任何数据更改

于 2014-01-02T08:19:01.320 回答