2014-06-05 34 views
0

我想在作用域選項中使用& attr以便公開外部控制器的API。帶有隔離作用域的AngularJS指令:在函數中傳遞參數

這是我目前的方式使用:example

的問題是,我只能通過一個對象,迫使功能結合有一次特定鍵(在連接例如,test內部內PARAMS hideDialog(test)被問到,因爲我需要它作爲電話close({'test':'Letho'})中的鑰匙)。

有沒有什麼辦法可以在綁定時省略鍵?這樣我就可以直接使用:

<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog"> 
    Check out the contents, {{name}}! 
</my-dialog> 

<a href class="close" ng-click="close('Letho')">&times;</a> 

感謝。

+0

我不要以爲你可以這樣做,但如果你想用多個參數調用'{'test':{param1:'',param2:'',那麼你可以傳遞一個對象回該方法而不是發送一個字符串。 }}' – Chandermani

+0

@Chandermani感謝您的評論。我只是認爲要求綁定添加一個未聲明的密鑰'測試'看起來像一個不好的代碼氣味。 –

+0

您可以進一步擴展您的工作方式嗎?你希望能夠在標記中傳遞hideDialog()以及你想在控制器中接收什麼?試圖確保我理解用例。 – tasseKATT

回答

2

指令用法:

<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog"> 

指令:

scope: { 
    'onClose': '&' 
}, 
templateUrl: 'my-dialog-close.html', 
link: function (scope) { 

    scope.close = function (value) { 
    var expressionHandler = scope.onClose(); 
    expressionHandler(value); 
    }; 
} 

指令模板:

<a href class="close" ng-click="close('Letho')">&times;</a> 

演示:http://plnkr.co/edit/2pxIHoTAP1OeAhmhA9ow?p=preview

+0

它的工作原理!謝謝!我可以問一下'onClose'的含義是什麼?怎麼運行的? –

+0

沒關係,我通過調試找到它。再次感謝! –

+0

不客氣:) – tasseKATT

相關問題