从Angular Directive调用父控制器

时间:2014-09-25 22:47:33

标签: angularjs angularjs-directive

简而言之,我试图将我的指令中的数据集传递回其父控制器。我已经看到了这方面的一些细微差别,但在某个地方,我错过了一些东西,而我所做的并不是很有效。我有一个指令,从父节点接收回调定义,如下所示:

<my-directive my-list="myData" update-parent="parentCallback(newData)">

父控制器中的回调非常简单,但传入的数据为空:

$scope.parentCallback = function(newData) { /* when it gets here its null */ };

指令的定义如下:

myModule.directive('myDirective', function() {
return {
    restrict: 'E',
    templateUrl: 'Template.html',
    replace: true,
    scope: { myData: '=', updateParent: '&' },
    controller: function($scope, $element, $attrs) {...}

指令控制器中的选择事件试图通过回调推送数据,如下所示:

$scope.updateSelection = function() {
    /* here the data is good */
    $scope.updateParent($scope.currentSelection);
};

当前选择变量在指令范围内定义,并通过下拉列表框中的选择进行设置。发生的事情是,在上面的函数中,它调用父回调,发现它没问题,传递好的数据,但是当它到达父端时,参数为空。我对此并不熟悉,但我认为&#39;&amp;&#39;会让我把数据传回给父母。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

为了将参数传递给绑定function,必须将参数作为对象传递,对象的键是绑定函数的参数名称,如下所示:

$scope.updateSelection = function() {
    $scope.updateParent({newData:$scope.currentSelection});
};