2015-07-13 72 views
0

我一直在使用其他MVC框架,但我是AngularJS的新手,并且遇到了问题。我有一个名为“Projects”的控制器,路由是/ projects,但我希望能够执行/ projects/java,我将调用新的页面模板/视图并显示该内容。AngularJS添加动作到控制器

我该如何在AngularJS中做到这一点?有没有办法为项目创建动作,还是需要做其他的事情?

angular 
    .module('konradApp', [ 
     'ngRoute' 
    ]) 
    .config(function ($routeProvider) { 
     $routeProvider 
      .when('/', { 
       title  : 'Welcome', 
       templateUrl : 'views/main.html', 
       controller : 'MainCtrl', 
       controllerAs : 'main' 
      }) 
      .when('/about', { 
       title  : 'About', 
       templateUrl : 'views/about.html', 
       controller : 'AboutCtrl', 
       controllerAs : 'about' 
      }) 
      .when('/projects', { 
       title  : 'Projects', 
       templateUrl : 'views/projects.html', 
       controller : 'ProjectsCtrl', 
       controllerAs : 'projects' 
      }) 
      .when('/contact', { 
       title  : 'Contact', 
       templateUrl : 'views/contact.html', 
       controller : 'ContactCtrl', 
       controllerAs : 'contact' 
      }) 
      .otherwise({ 
       redirectTo : '/' 
      }); 
    }); 

控制器:

angular.module('konradApp') 
    .controller('ProjectsCtrl', function() { 

    }); 
+1

哪里是你的代码:-) –

+0

ATLEAST给你如何路由您的应用程序的一些代码。 –

+0

@JqueryKing我添加了我的应用程序的代码和项目控制器 –

回答

1

你会想使用一个名为$ routeParams的东西来做到这一点,它可以让你编写你的视图。因此,您的路由配置变为:

.config(function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
      title  : 'Welcome', 
      templateUrl : 'views/main.html', 
      controller : 'MainCtrl', 
     }) 
     .when('/:view', { 
      title  : function($routeParams){return $routeParams.view}, 
      templateUrl : function(params){return 'views/'+params.view+'.html'}, 
      controller : function($routeParams){return $routeParams.view+'Ctrl'}, 
     }) 

     .otherwise({ 
      redirectTo : '/' 
     }); 
}); 
+0

我看到一堆404的时候你这样接近它,似乎是一个坏主意tbh。 – skubski

+0

我同意这可以导致404或基于不存在视图的不良路由。为了确保他们不得不通过扩展他们的功能来处理或重定向基于不良网址来处理这种情况。但是,根据给出的例子,这可以很容易地扩展。 – mikeswright49