2015-11-25 4 views
1

Как выполнить функцию из директивы?Выполнить функцию из директивы

Или другие варианты, чтобы сделать это лучше.

Страница:

<div ng-app="app" ng-controller="MainCtrl"> 
    <button ng-click=refresh()></button> 
    <bs-table ???></bs-table> 
</div> 

Главный контроллер:

angular.module('app', ['bsTable']) 
    .controller('MainCtrl', ['$scope', function ($scope) { 
     $scope.refresh = function() { 
      ??? 
     }; 
}]); 

Функция добавлена ​​в контроллер директивы:

angular.module('bsTable', []) 
    .directive('bsTable', [function() { 
     return { 
      restrict: 'EA', 
      template: '<table></table>', 
      replace: true, 
      scope: { 
       ??? 
      }, 
      link: function ($scope, $element) { 
       $element.bootstrapTable(); 
      },     
      controller: function ($scope, $element) { 
       $scope.refresh = function() { 
        $element.bootstrapTable('refresh'); 
       }; 
      }     
     } 
    }]); 
+0

Какую функцию вы хотите выполнить? Обновление на главном ctrl? –

+0

Директива с областью выделения содержит функцию обновления. Необходимо выполнить обновление с основного контроллера. –

ответ

1

В главном контроллере:

$scope.functionToPass = function(anyParameter){ ... }; 

В директиве:

..., 
scope: {yourFunction:'=yourFunction'}, 
..., 

В HTML:

<bs-table yourFunction="functionToPass"> 

Теперь вы можете получить доступ к функции в регуляторе директивы и связи как $scope.yourFunction.

Смежные вопросы