2014-07-04 136 views
0

,所以我有一個例子定製指令代碼呼叫控制器內自定義指令功能angularjs

angular.module('myApp.directives', []). 
      directive('exampleDirective', ['version', function(version) { 
      return { 
         link:function(scope,elm,attr) { 
         elm.on('click',function() { 
           alert("clicked element") 
         }); 
         } 
        } 
      }]); 

,這是標記HTML,我提出

<example-directive></example-directive> 
    <button ng-click="click()">click me</button> 

正如你所看到的按鈕在示例指令環境之外,並且您可以看到定義了ng-click並將click()函數放入控制器中。

我的問題是我怎樣才能從自定義指令中獲得alret(「clicked元素」),當我點擊了angularjs中的ng-click按鈕?

+0

你不能與你有什麼。你有兩個不同的範圍。 – AlienWebguy

+0

如果我沒有弄錯自定義指令中的yap隔離範圍..所以我在上面寫的方法沒有另一種方式? –

回答

3

試試這樣說:

plunker

app.directive('exampleDirective', function() { 
    return { 
    restrict: 'E', 
    link:function(scope,elm,attr) { 
     scope.clicky = function(){console.log('clicked')}; 
    } 
    } 
}); 

因爲我們不是在創造與指令一個新的範圍,無論是範圍,該指令的邏輯函數稱爲和一個由推斷ng-click(這是帶角度的另一個指令)將是相同的範圍,在此例中爲$rootScope

請注意,您需要爲該指令添加restrict: 'E'以處理您寫的內容。它的默認值是屬性(E代表元素名稱),所以如果你有它,它將工作沒有它<div example-directive />

+0

我試過你的plunkr,按鈕在指令容器內,如果我沒有弄錯..好,有沒有一種方法與我的方法上面?因爲我的項目樣機設置爲這樣.. –

+0

它的工作原理!謝謝你,小夥伴! –