2013-05-10 106 views
4

如何從控制器獲取一些數據並在指令中使用它,這不是問題。 但是,當我需要從指令中獲取數據並在控制器中使用它時,會出現這種情況。控制器和指令之間的AngularJS通信

對於exmpl:

我的控制器:

function MyController($scope, $location, myDirective) { 
    "use strict"; 

    // here i need use scope.importantValue and create() method from directive 

} 

我的指令:

 .directive("myDirective", function() { 
"use strict"; 
return { 
    restrict: 'A', 
    template: '<div></div>', 
    replace: true, 
    scope: { 
     data: '=', 
    }, 
    link: function(scope, elm) { 
     scope.importantValue = "value"; 

     function create() { 
      console.log("Directive works..."); 
     } 

}; 
}) 

我如何使用我的控制器內從指令變量或/和方法?

+1

你爲什麼要這麼做? – lucuma 2013-05-10 13:38:45

+2

你不應該這樣做 – 2013-05-10 13:56:16

+0

我們轉而指示了一些類似於少數視圖的代碼部分,這個指令包含了一些可以在項目其他部分使用的變量。我想知道是否可以在控制器中使用這些變量? – Lugaru 2013-05-10 14:03:20

回答

9

完成此操作的最簡單方法是使您的控制器和指令從服務中獲得importantValuecreate()

angular.module(/* Your module */).service('sharedData', function() { 
    return { 
     importantValue: "value", 
     create: function() { 
      console.log("Directive works..."); 
     } 
    }; 
}); 

現在,你可以注入sharedData到你的指令和控制,並從任何地方訪問importantValuecreate()

+0

好!那是我真正需要的!+ – Lugaru 2013-05-15 13:09:26