2015-07-13 68 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