Angular JS - 指令的通信服务

时间:2013-10-28 13:26:41

标签: angularjs

我无法理解从服务到自定义指令的推荐方式。 custom指令是一个交互式svg图形,它在用户交互时调用注入服务的方法来检索新数据。这应该以异步方式发生。我在这里和那里读到,事件通常不是在angularjs中进行通信的推荐方式。我应该使用回调函数吗?或?

谢谢好友

马丁

1 个答案:

答案 0 :(得分:2)

将服务注入指令,然后该指令调用服务上的方法作为参数传递参数值。

要让指令知道服务方法是异步完成的,请让service方法返回一个promise对象。

http://jsfiddle.net/gGhtD/5/

var myApp = angular.module('myApp', []);

//myApp.directive('myDirective', function() {});
myApp.factory('myService', function ($q, $timeout) {
return {
    doSomething: function (msg) {
        var d = $q.defer();

        $timeout(function () {
            d.resolve("resolved: " + msg);
        }, 1500);

        return d.promise;
    }
  }
});

function MyCtrl($scope, myService) {
    $scope.callService = function () {
      $scope.sent = new Date();
      $scope.msg = "";
      $scope.timestamp = "";
      myService.doSomething("some value")
        .then(function (data) {
                $scope.timestamp = new Date();
                $scope.msg = data;
         });
    }
}