根据路线不同地管理数据 - AngularJs

时间:2015-09-23 14:08:33

标签: javascript angularjs

我是angularjs的新手,只是无法弄清楚mange的基本情况,这里是:

我的路线是这样定义的:

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/list', {
        templateUrl: 'list.html',
        controller: 'studentCtrl'
      }).
      when('/detail/:id', {
        templateUrl: 'detail.html',
        controller: 'studentCtrl'
      }).
      otherwise({
        redirectTo: '/list'
      });
  }]);

在我的列表视图中,我的$scope将有一个模型变量,其中包含学生列表。在我的详细视图中,我的模型变量将包含一个学生。我的问题是如何在controller级别管理此问题。现在我有以下代码,它总是返回一个学生列表:

app.controller('studentCtrl', function($scope,) {             

   $scope.model= [
      { Name : 'Nicolas', Age: 30, Email: 'nick@gmail.com' }, 
      { Name : 'Paul', Age: 45, Email: 'paul@gmail.com' },
      { Name : 'Mary', Age: 17, Email: 'mary@gmail.com' },
   ];

});

基于某些条件,我需要能够用列表或单个学生填写模型。通过将$ routeParams注入我的控制器功能是最好的方法吗?我完全不在赛道上了吗?

PS 我知道直接在我的控制器中管理数据并不是最好的方法,使用工厂或服务可能是最好的做法,我还没有,因为我还在学习过程中。 / em>的

1 个答案:

答案 0 :(得分:0)

也许如果您使用$routeParams服务组件,它可以检查网址中的当前ID。

$ routeParams允许AngularJS匹配配置$ routeProvider时设置的url参数。例如,followint语句:

  • when(' / detail /:id',{...

意思是:

    控制器中的
  • $ routeParams.id将返回在url中设置的watever值

SO:

  • http://yoursite.com/detail/10使$ routeParams.id返回整数10

    app.controller('studentCtrl', function($scope, $routeParams) {                       
       if($routeParams.id){
           'call /detail/:id url';
       } else {
           'call /list';
    
           $scope.model= [
               { Name : 'Nicolas', Age: 30, Email: 'nick@gmail.com' }, 
               { Name : 'Paul', Age: 45, Email: 'paul@gmail.com' },
               { Name : 'Mary', Age: 17, Email: 'mary@gmail.com' },
           ];
      }
    });