在指令中的隔离范围中定义的调用函数

时间:2016-03-19 20:18:44

标签: javascript angularjs ionic-framework

我在这里错过了什么吗?

我不能从模板showHelp()访问功能ng-click吗?

我已经和我斗争了好几个小时,我无法做到正确

angular.module('starter.directives', [])
.directive('errorMessage', function() {
  return {
    restrict: 'E',
    require: '^form',
    scope: true,
    template:'<button ng-click="showHelp()" class="button icon ion-android-alert button-outline button-assertive"></button>',
    link: function(scope, element, attrs, formCtrl) {

      scope.showHelp = function(){
        console.log('hello');
      }

    }
  };
});

2 个答案:

答案 0 :(得分:2)

您的代码没有任何问题。我猜你只是忘了在你的HTML中包含该模块。看起来像

的东西
<div ng-app="starter.directives">
    ....
</div>

Here's您的代码在jsFiddle

中正常运行

答案 1 :(得分:0)

您应该在controller而不是link功能中添加它。 >在所有内容呈现后,link函数运行

angular.module('starter.directives').directive('errorMessage', function() {
  return {
    restrict: 'E',
    scope: true,
    template:'<button ng-click="showHelp()" class="button icon ion-android-alert button-outline button-assertive">Test</button>',
    controller: function($scope) {
      $scope.showHelp = function(){
        console.log('hello');
      }
    }
  };
});

我认为问题在于您通过在此处传递[]来重新初始化您的模块 angular.module('starter.directives', [])如果您将第二个参数传递给angular.module,它会认为您传递了一系列依赖项并将重新启动该模块。