2014-11-06 55 views
0

我正在處理表設置,特別是pageSize的指令。

<table-settings page-size="pagination.pageSize" sizes="PAGE_SIZES" </table-settings> 

我面對的範圍,因爲pageSize PARAM遮蔽的問題是一個基本至極被綁定到一個ng-model另一個指令內(下拉菜單)。

我知道我可以使用對象,而不是像pageSize = {value:5},但它不方便/自然使用。

我不喜歡使用$ parent ng-model='$parent.pageSize',因爲我不確定它指的是哪個$父級。

所以我決定添加一個指向'scope的指針,我可以用它來在模板中「範圍」綁定 。 (如使用控制器/ controllerAs語法)

基本上它看起來像這樣

link: function(scope, elem, attr, controller) { 
    scope.tableSettings = scope; 
} 

和它的使用是這樣的:

<input type="text" ng-model="tableSettings.pageSize">

所以我想知道,如果它是好還是壞主意? 如果這是一個壞主意,如果你有更好的一個?

謝謝!

+0

我不知道如果我得到了它right.Why沒有使用雙向綁定變量? – Michael 2014-11-06 08:57:51

+0

,因爲我可以在其他地方使用分頁(例如以ng-repeat分頁)。 @binding意味着另一個'&'類型的綁定來調用pagesize更新的處理器(例如:用新的pageSize做一個請求) – lionelB 2014-11-06 09:41:05

回答

0

如果您的指令始終要求具有控制器的特定父指令,則可以在指令設置中使用require選項來要求該控制器爲父級(不一定是直接父級)。

作爲獎勵,您可以將該控制器注入您的link功能,並且您可以從那裏獲取參數。

瞭解更多關於它的文檔(https://docs.angularjs.org/guide/directive - 尋找「創建通信的指令」在底部)

+0

我知道,但指令不需要另一個指令的控制器(它是顯示錶設置的小部件,如顯示隱藏列和頁面大小設置)。 – lionelB 2014-11-06 09:42:17