2014-01-20 44 views
0

我想使用控制器的指令,但我想訪問url模板中的同一個控制器。我怎樣才能做到這一點?例如,我想沿着線的東西:如何訪問我在templateUrl中爲angularjs指令聲明的控制器?

<my-directive ng-click="myController.doSomething()"></my-directive> 

這將有同樣的效果,如果我沒有做一個自定義的指令,並宣佈

<div ng-controller="MyController as myController" ng-click="myController.doSomething()"></div> 

注:我不是在尋找一個使用jquery綁定鏈接函數中的點擊行爲的解決方案。

澄清:我使用的是打字稿與angularjs,和我想要做的東西像下面這樣:

export class Controller { 
    public items = [item1, item2, item3]; 

    public doSomething() { 
    // do something 
    } 
} 

export class MyDirective implements ng.IDirective { 
    public templateUrl = "path/to/url"; 
    public controller = Controller; 
    public link = // whatever my link function does; 
} 

而且在模板

<div ng-repeat="item in Controller.items" ng-click="Controller.doSomething()></div> 

,只是我不知道實際上我將如何參考指令所使用的控制器。有沒有辦法做到這一點?

回答

0

讓我們開始與小提琴互動,試圖找出你想要達到的目標。這個目前包含一個你可以點擊的指令,並執行一些內部指令邏輯。

http://jsfiddle.net/3EFH4/

它採用elem.on()而不是ng-click趕上事件。如果您肯定想要使用控制器來處理點擊,您需要解釋原因,以及它是否需要在指令外部(這通常是因爲需要交互的可變數據)。

+0

這似乎並不能很好地擴展我想要的更多功能......另外,我想訪問我在聲明指令時使用的控制器。在這種情況下,對於該指令將會有一個聲明 「controller:MyController」 。 – markwongsk

+0

你有沒有考慮過給自己的指令一個控制器?您可能需要更詳細地解釋您要實現的目標。 –

+0

我加了一些細節。謝謝您的幫助! – markwongsk

相關問題