在指令父作用域上调用函数,并使用指令作用域参数。

20 浏览
0 Comments

在指令父作用域上调用函数,并使用指令作用域参数。

我正在开发一个指令,根据其模板中定义的点击事件(ng-click)来显示和隐藏其内容。在一些使用该指令的视图中,我希望能够知道该指令当前是显示还是隐藏其内容,以便能够响应DOM的变化。该指令具有隔离作用域,我正试图在指令被"切换"时通知父作用域。我尝试通过在指令中传递一个回调函数来实现这个目标,在使用该指令的地方可以调用该函数,以便在指令的状态发生变化时(即隐藏或显示)进行相应的操作。

但是,由于指令的状态(隐藏或显示)存储在指令的隔离作用域中,并且是在ng-click之后确定的,因此我需要从指令内部调用父作用域的函数,而不是从视图中调用。

通过一个例子来演示将更容易理解。这里有一个示例链接,演示了我想要做的事情:http://plnkr.co/edit/hHwwxjssOKiphTSO1VIS?p=info

var app = angular.module('main-module',[])
app.controller('MainController', function($scope){
  $scope.myValue = 'test value';
  $scope.parentToggle = function(value){
    $scope.myValue = value;
  };
});
app.directive('toggle', function(){
    return {
            restrict: 'A',
            template: 'Click Me',
            replace: true,
            scope: {
                OnToggle: '&'
            },
            link: function($scope, elem, attrs, controller) {
                $scope.toggleValue = false;
                $scope.toggle = function () {
                    $scope.toggleValue = !$scope.toggleValue;
                    $scope.OnToggle($scope.toggleValue)
                };
            }
        };
});

我对Angular还比较新手。首先,这样做是不是一个不好的主意?我应该使用服务还是其他东西来传递函数引用?

谢谢!

0