2012-10-26 259 views
5

我对使用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); 
    }; 
}); 

在此先感谢您的帮助!

回答

11

可能有其他方法可以做到这一点,但请参阅this fiddle,您可以使用传递到func属性中的相同参数名称将对象传递给该函数。

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

因此,在这种情况下,因为你叫bar(someValue)func属性你想在一个物体someValue通过在链接功能。您打电话parentFunc,因为这是&func链接到您的隔离范围内。

+1

完美的作品,谢谢! – phoffman