如何将数据从隔离范围传递到父范围?

时间:2012-10-26 18:53:02

标签: javascript angularjs

我对使用AngularJS相当新,我想要做的是创建一个指令并从其中的父作用域调用函数。我能够做到这一点,但我似乎无法弄清楚如何将数据从隔离范围通过表达式传递到父范围。 Angular Developer指南中对此的解释有点令人困惑。

指令:

app.directive('myDir', function() {
    return {
        restrict: 'E',
        template: '<div ng-click="parentFunc(someValue)"><div>', 
        scope: {
           parentProp: '=property',
           parentFunc: '&func'
        },
        link: function(scope, element, attrs) {

        }
    }
});

标记:

<my-dir prop="foo" func="bar(someValue)"></my-dir>

控制器:

app.controller('TstCtrl', function($scope) {
    $scope.foo = 'test';
    $scope.bar = function(value) {
       console.log(value);
    };
});

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:11)

可能还有其他方法可以执行此操作,但请参阅this fiddle,使用传递到func属性中的相同参数名称将对象传入函数。

    link: function(scope, element, attrs) {
        scope.parentFunc({someValue:'testing'});            
    }

因此,在这种情况下,由于您在bar(someValue)属性中调用了func,因此您希望在链接函数中传入someValue的对象。您正在调用parentFunc,因为这是&func在您的隔离范围内链接的内容。