我一直在观看John
Linquist的视频,他在一个视频中给出了这个例子:
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(); }) } }
我想知道的一件事是,这个例子中的指令应该与控制器对话,还是创建服务然后让指令与服务对话是一种更好的编程习惯?我想我仍然不确定指令以这种方式与控制器通信是否是常见做法.
我该怎么做
<span enter="loadMoreTweets()">Something</span>
JS
app.controller('AppController',function ($scope) { $scope.loadMoreTweets = function () { console.log("Loading tweets!"); } }) app.directive("enter",function() { return { link: function (scope,attrs) { element.bind("mouseenter",function () { scope.$apply(attrs.enter) }) } } });
演示:Plunker
实现同样的另一种方式
app.directive("enter",function() { return { scope: { callback: '&enter' },link: function (scope,function () { scope.$apply('callback()') }) } } });
演示:Plunker