簡單的回答是:你不能。
Angular無意讓您選擇重用它。你可以看到這是他們的source code。 $scope.$mdMenu = {}
返回一個不同的範圍,因此可以防止您更改任何變量。即使是「哈克」方式也很難找到。
您必須將menuContainer
和triggerElement
更改爲您的新觸發器,然後在最後更改它。但如前所述,這樣做會很糟糕。
最乾淨的解決方案是製作一個模板。
模板包含要重用的菜單。(這應該是<body ng-app="MyApp">
內)
<script type="text/ng-template" id="menu">
<md-menu md-offset="0 60">
...
</md-menu>
</script>
你再做出指示,例如
.directive('mdMenuButton', function($compile, $templateCache) {
return {
restrict: 'M',
replace: 'true',
template: $templateCache.get('menu')
// as of now "templateUrl" doesn't work in this case
}
})
您現在可以重新使用此代碼很多次,只要你想這樣
<!--directive: md-menu-button -->
<br/> different stuff not related
<br/> different stuff not related
<!--directive: md-menu-button -->
<br/> different stuff not related
可能重複[怎麼辦,我叩triggerhandler上帶有一個專有的 - fake-事件參數](http://stackoverflow.com/questions/22332338/how-do-i-call-triggerhandler-with-a-specific-fake-event-parameter) –
不,我一直在那裏,它doesn解決不了問題。 – Mike
你能解釋一下你在這裏想達到什麼目的嗎?就我所見,您可以準確地得到您期望的行爲:您觸發另一個按鈕的點擊處理程序,從而從該「已觸發」按鈕打開菜單。 –