2013-10-28 57 views
0

在單頁角的應用程序,我有一個控制器,它充當選項卡處理機3個屏幕:在AngularJS中,在一個ng-click中有兩個調用是可接受的方法嗎?

app.controller('tabCtrl', function ($scope, getName) { 
    $scope.tabs = { 
    issue_list: {'id': 'issue_list', 'title': 'Issues reported'}, 
    issue_report: {'id': 'issue_report', 'title': 'Report issue'}, 
    user_prefs: {'id': 'user_prefs', 'title': 'Your preferences'} 
    }; 
    $scope.tab = $scope.tabs.issue_list; 
    $scope.activate = function(myid) { 
    if (myid in $scope.tabs) { 
     $scope.tab = $scope.tabs[myid]; 
    } 
    }; 
}); 

由於我需要激活用戶經由另一控制器成功提交數據後的選項卡之一:

app.controller('issueCtrl', function ($scope, $http, server, getName) { 
    //lots of data-server stuff here 
}); 

因爲它會從不同的地方需要,我正要改寫「tabCtrl」作爲service,以避免整個calling one controller from another事情。不過在此之前我剛剛打電話從點擊兩個控制器:

<button id="raise" ng-click="addIssue();activate('issue_list')" type="button">send now</button> 

這是可以接受的AngularJS的做法呢?看起來有點笨拙,但我是Angular的新手,有截止日期,而且這只是「正常工作」。

回答

1

基本上,所有ngClick用途是事件處理,因爲你真的不希望你的事件處理代碼亂拋垃圾的DOM簡單的黑客。隨着你的系統複雜度的增長,那些ngClicks應該演變成自己的指令,封裝更多的邏輯。如果它能夠正常工作,並且您已經到了最後期限,那麼就與它一起工作,繼續下一個問題。這是AngularJS強大功能的一部分,它提供了大量方便快捷的解決方案工具,以及用於更清晰的架構分離和模塊化的豐富框架。

1

對於選項卡,您應該考慮編寫指令。它們足夠通用,您可以在很多地方重複使用它們。我並不是建議你使用整個角度引導UI項目,但你應該看看他們是如何構建他們的靈感。

http://angular-ui.github.io/bootstrap/#/tabs

+0

感謝邁克 - 標籤的角度bootstrap UI代碼很好,內容豐富。當我們有時間整理時,我一定會重新審視它。 –

相關問題