在单页 Angular 应用程序中,我有一个控制器,它充当 3 个屏幕的选项卡处理程序:
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
' 重写为 a service
,以避免整个从另一事物调用一个控制器。但与此同时,我只是一键调用了两个控制器:
<button id="raise" ng-click="addIssue();activate('issue_list')" type="button">send now</button>
这是可接受的 AngularJS 实践吗?似乎有点笨拙,但我是 Angular 的新手,有截止日期,这“行得通”。