0

在单页 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 的新手,有截止日期,这“行得通”。

4

2 回答 2

1

对于选项卡,您应该考虑编写指令。它们足够通用,您可以在许多地方重复使用它们。我不是建议你使用整个 angular bootstrap UI 项目,但你应该看看他们是如何构建他们的作为灵感的。

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

于 2013-10-28T12:56:20.997 回答
1

基本上,所有ngClick的使用都是简单的事件处理技巧,因为你真的不希望你的事件处理代码乱扔你的 DOM。随着您的系统变得越来越复杂,这些 ngClick 应该演变成它们自己的指令来封装更多的逻辑。如果它有效并且您在最后期限内,请继续使用它并继续处理下一个问题。这是 AngularJS 强大功能的一部分,它有大量方便的工具用于快速解决方案,以及用于更清晰的架构分离和模块化的丰富框架。

于 2013-10-29T07:32:14.350 回答