指令应该与Angular JS中的控制器通信吗?

Ala*_*an2 7 angularjs

我一直在观看约翰·林奎斯特的视频,并在一个视频中以此为例:

var app = angular.module('twitterApp', [])

app.controller("AppCtrl", function ($scope) {
   $scope.loadMoreTweets = function () {
      alert("Loading tweets!");
   }
}

app.directive("enter", function() {
   return function (scope, element, attrs) {
      element.bind("mouseenter", function () {
         scope.LoadMoreTweets();
      })
   }
}
Run Code Online (Sandbox Code Playgroud)

有一两件事我想知道的是应该在这个例子中,指令顶嘴控制器或者这将是一个良好的编程习惯,以创建一个服务,然后让指令跟一个服务?我想我仍然不确定指令以这种方式与控制器通信是否是常见做法.

U管视频

Aru*_*hny 6

我该怎么做呢

<span enter="loadMoreTweets()">Something</span>
Run Code Online (Sandbox Code Playgroud)

JS

app.controller('AppController', function ($scope) {
   $scope.loadMoreTweets = function () {
      console.log("Loading tweets!");
   }  
})



app.directive("enter", function() {
   return {
     link: function (scope, element, attrs) {
       element.bind("mouseenter", function () {
          scope.$apply(attrs.enter)
       })
     }
   }
});
Run Code Online (Sandbox Code Playgroud)

演示:Plunker

实现同样的另一种方式

app.directive("enter", function() {
   return {
    scope: {
      callback: '&enter'
    },
    link: function (scope, element, attrs) {
       element.bind("mouseenter", function () {
          scope.$apply('callback()')
       })
     }
   }
});
Run Code Online (Sandbox Code Playgroud)

演示:Plunker