Javascript 如何使用“this”声明角度指令

Javascript 如何使用“this”声明角度指令,javascript,angularjs,scope,this,Javascript,Angularjs,Scope,This,我有以下代码: 或为TL;博士 app.directive("enter", function() { return function(scope, element) { element.bind("mouseenter", function() { console.log("I'm inside of you!"); }); }; }); 我理解这背后的主要逻辑,但我记得我学习过如何编写这样的指令: app.direc

我有以下代码:

或为TL;博士

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通过此命令将变量分配给对象。我也可以用指令来做吗?或者它们是完全不同的东西

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

<div directive-name></div>

我想你是在找这样的东西

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

无论是哪种方式,从您的问题是好的声明指令,我更喜欢返回的对象更可读和自我解释的人谁是要触摸代码后,我

你能解释我这将如何发挥与控制器这个属性声明?还是会是一样的?我认为这种向作用域中添加属性的方式是停止使用作用域变量的一种方式,但将其命名为这样的方式?我认为角度控制器不适用于dom操作,这正是我使用角度控制器的目的。另外,您能解释一下我的控制器如何使用它向作用域添加属性吗?当我停止在控制器上使用指令时,将作用域注入指令似乎很奇怪。我错过了link函数,但它仍然可用,link发生在compali之后,控制器是预编译的
  return {
    restrict: 'A',
    controller: 'SomeController',
    controllerAs: 'ctrl',
    template: '{{ctrl.foo}}'
    link: function(){}
  };