指令之间的通信

时间:2014-07-17 15:38:35

标签: angularjs angularjs-directive communication

我的应用程序有2个指令:

  1. 注册
  2. CreateItem
  3. 如果用户未经过身份验证,我想从CreateItem调用Signup 但我不知道如何从CreateItem指令方法调用Signup Directive方法。

    这是我的代码:

    .directive('createitem', function($modal, $http, Global) {
    return {
    restrict: 'E',
    transclude: true,
    templateUrl : 'views/item/create.html',
    link: function(scope, elem, attrs) {
        scope.openCreateItemModal = function() {
        // I want to call openSignupModal if user not authenticated (Global.authenticated)
        }
    }}}
    .directive('signup', function($modal, $http) {
    return {
    restrict: 'A',
    transclude: true,
    templateUrl : 'views/signup/create.html',
    link: function(scope, elem, attrs) {   
    scope.openSignupModal = function() {
    
    }
    
    }}}; 
    

    这是我的观点(我想将join指令注入createitem指令)

    <createitem join>
    

    最简洁的方法是什么?

    感谢。

1 个答案:

答案 0 :(得分:2)

创建一个包含两种方法的简单服务工厂,并在应用程序中的任何地方注入工厂

app.factory('MyModals', function() {
  return {
    openCreateItemModal: function(arg1, arg2) {

    },
    openSignupModal: function(arg1, arg2) {

    }
  }

});

.directive('createitem', function($modal, $http, Global, MyModals) {
    return {     
      link: function(scope, elem, attrs) {
        if(! scope.isAuthenticated )
        MyModals.openCreateItemModal(arg1, arg2);
      }
    }
  }