Angular,从指令控制器中的控制器触发函数

时间:2015-04-01 19:48:09

标签: javascript angularjs

所以我知道你可以在一个指令中获取一个函数来触发一个控制器中的函数(参见:AngularJS - pass function to directive),但是,现在我正在努力实现一些稍微不同的东西。

我试图在控制器中使用函数来触发指令中控制器内的函数(因此在指令中处理)。所以我从指令外的控制器中单击按钮,它会触发指令内的一个函数。

这是我试过的

指令:

return {
            restrict: 'A',
            replace: true,
            controller: EditorCtrl.componentName,
            scope: {
                content: '=',
                requestNow: '@'
            },
            templateUrl: 'editor.html'
        };

正在使用的指令:

  <div cengage-file-editor content="XmlContent" request-now="changeXml()"></div>

外部控制器功能:

  $scope.changeXml = function(){
     //fire function inside directive controller?
       };

指令控制器内的函数:

 $scope.changeXml = function(){
            console.log("hit");
           }

基本上,我希望用户已经触发了changeXml函数(在指令之外)并让它发送到指令并连接并触发其中的函数。不知道如何做到这一点,会喜欢一些帮助。谢谢!

1 个答案:

答案 0 :(得分:-1)

你必须注意控制器上存在的东西才能触发指令控制器中的功能。

html代码:  <div cengage-file-editor content="XmlContent" changeXmlTrigger="somethingChanged"></div>

外部控制器的功能:

$scope.changeXml = function(){
  $scope.somethingChanged = true;
};

在指令的控制器中:

$scope.$watch('somethingChanged', function(newVal, oldVal) {
  if(newVal && newVal !== oldVal) {
    $scope.changeXml();
  }
});

$scope.changeXml = function(){
  console.log("hit");
}