2012-10-26 149 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