javascript - 如何将函数处理程序从 Controller 传递到 AngularJs 中的指令隔离范围?

标签 javascript angularjs

我在 Controller 中有以下功能:

  angular.module('app').controller('BodyController', function(){
    this.click = function(message){
      alert(message);
    }
  })

我想将此函数传递到指令的独立作用域中,以使用一些特定参数调用它,类似这样:

  angular.module('app').directive('custom', function(){
    return {
      restrict: 'A',
      scope: {
        text: '@',
        click: '&click'
      },
      link: function(scope, element){
        //...
        scope.click('Hello, Plunker!');
        //...
      }
    }
  })

我以这种方式传递函数:

<h1 custom text="Hello Plunker!" click="ctrl.click"></h1>

这是一个例子:http://plnkr.co/edit/4zkxuHJIB3D339h2Oy60?p=preview

函数未被调用。我错过了什么?

提前致谢

最佳答案

你可以做类似的事情

 angular.module('app').directive('custom', function(){
    return {
      restrict: 'A',
      scope: {
        text: '@',
        click: '=click'
      },
      link: function(scope, element){
      //  console.dir(scope.click);
      element.bind("click",function(){

         scope.click('Hello, Plunker!');
      });

        element.text('Hello, Plunker!');
      }
    }
  })

在这里,您可以通过点击从父作用域获取点击功能:'=click'

并绑定(bind)该函数以点击该元素。

这里是 plnkr http://plnkr.co/edit/Ekw8I6Kg6tDOnIrnv4za?p=preview

或者您可以像这样将参数传递到您的指令中 http://plnkr.co/edit/mBbZil1jc4El2Jk79ru7?p=preview

关于javascript - 如何将函数处理程序从 Controller 传递到 AngularJs 中的指令隔离范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056840/

相关文章:

javascript - 更改状态栏中的链接

javascript - jQuery Mobile click event.preventDefault 似乎并没有阻止更改

javascript - 通过部分匹配获取动态id

javascript - AngularJS - $rootScope.$on - 多次执行

javascript - $q.when 中的 httpBackend Mock AJAX ES6 Promise

javascript - speed.cloudflare.com 是否有用于测试互联网速度的 JavaScript API,而不是在 cli 中?

javascript - 谷歌应用程序脚本使用触​​发器重新执行功能

JavaScript/AngularJS 修改数组中的属性

javascript - 数组大小内索引处的数组未定义

angularjs - 按值单击元素 - Protractor