1

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

谢谢哥们

马丁

4

1 回答 1

2

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

要让指令知道服务方法已异步完成,请让服务方法返回一个承诺对象。

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;
         });
    }
}
于 2013-10-28T13:29:23.263 回答