我无法理解从服务到自定义指令的推荐方式。 custom指令是一个交互式svg图形,它在用户交互时调用注入服务的方法来检索新数据。这应该以异步方式发生。我在这里和那里读到,事件通常不是在angularjs中进行通信的推荐方式。我应该使用回调函数吗?或?
谢谢好友
马丁
答案 0 :(得分:2)
将服务注入指令,然后该指令调用服务上的方法作为参数传递参数值。
要让指令知道服务方法是异步完成的,请让service方法返回一个promise对象。
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;
});
}
}