如何使用 "this" 声明 Angular 指令

How to declare an Angular directive using "this"

我有以下代码: http://jsbin.com/seveba/1/edit

或 TL;DR

app.directive("enter", function() {
    return function(scope, element) {
        element.bind("mouseenter", function() {
            console.log("I'm inside of you!");
        });
    };
});

我理解这背后的主要逻辑,但我记得学习如何编写这样的指令:

app.directive('directiveName', function() {
    link: function(scope, element, attrs) {
        // directive code goes here
    }
});

egghead上的代码好用吗?我知道 link 函数是在 angular 编译 dom 之后执行的,但这并不能帮助我弄清楚哪种方式更好。此外,我已经开始使用控制器作为语法,这让我停止在控制器上使用 $scope 通过 "this" 将变量分配给对象。我也可以用指令来做吗?或者它们是完全不同的东西?

The below syntax would be proper for creating a generic directive.

实施:

<div directive-name></div>

代码:

app.directive('directiveName', [function() {
  return {
    restrict: 'A',
     link: function(scope, elem, attrs) {

          elem.bind('click', function() {
          alert("clicked!");
     });
   }
  }
}]);

我猜你更想找这样的东西

  return {
    restrict: 'A',
    controller: 'SomeController',
    controllerAs: 'ctrl',
    template: '{{ctrl.foo}}'
    link: function(){}
  };

从你的问题来看,无论哪种方式都可以声明指令,我更喜欢 return 对象,它对我之后要接触代码的人来说更具可读性和自我解释性