2014-02-11 53 views
2

Im新角和Im使用版本1.2.9。我找到了一個路由示例,並嘗試將其適應於我的需求。

事情是我不需要使用任何模板我想要路由來呼叫我的控制器。要使用角度做只有路由的某些部分的應用程序。

然後在控制器中我會做一些Ajax調用來加載一些數據。

我知道這可能不是最好的解決方案,但項目是在沒有Angular的情況下啓動的,現在我們正在實施它,不想從頭開始重新啓動。

問題是,如果我不調用任何模板,控制器不會被調用。 我知道我可以在標籤中調用控制器,例如:<div ng-controller="...">,但這是否是一個好的解決方案?

謝謝

所以,我有我的app.js

var sampleApp = angular.module('sampleApp', ['ngRoute']); 
    sampleApp.config(['$routeProvider', 
     function($routeProvider) { 
     $routeProvider. 
      when('/AddNewOrder', { 
      templateUrl: 'templates/add_order.html', 
      controller: 'AddOrderController' //this controller is being called. 
     }). 
      when('/ShowOrders', { 
      controller: 'ShowOrdersController'//this controller is never called. 
      }). 
      otherwise({ 
      redirectTo: '/AddNewOrder' 
      }); 
    }]); 


    sampleApp.controller('AddOrderController', function($scope) { 
     console.log("AddOrderController") 
     $scope.message = 'This is Add new order screen'; 

    }); 

    sampleApp.controller('ShowOrdersController', function($scope) { 
     console.log("ShowOrdersController") 
     $scope.message = 'This is Show orders screen'; 

    }); 

HTML

<!DOCTYPE html> 
<html lang="en"> 
    <body ng-app="sampleApp"> 
     <ul class="nav"> 
      <li><a href="#AddNewOrder"> Add New Order </a></li> 
      <li><a href="#ShowOrders"> Show Order </a></li> 
     </ul> 
     <div class="col-md-9"> 
      <div ng-view></div> 
     </div> 
     <script src="./angular-lib/angular.js"></script> 
     <script src="./angular-lib/angular-route.js"></script> 
     <script src="./app.js"></script> 
    </body> 
</html> 

模板

<h2>Add New Order</h2> 

{{ message }} 

回答

2

,您可以使用空模板來解決此問題:

 when('/ShowOrders', { 
     template: '', 
     controller: 'ShowOrdersController' 
     }). 

我寧願做這在配置$routeProvider,而不是使用ng-controller = "...",因爲它使控制器的聲明在一個地方,使代碼更易於維護。如果ng-controllers在代碼中散亂無章,那麼很難推斷模板將具有什麼樣的scope

注意:Prior to 1.2.7,人們將不得不使用<br />作爲它的工作模板。對於1.2.9,an empty string should work

+0

它的工作原理非常感謝只需注意使用的template代替templateUrl

when('/AddNewOrder', { templateUrl: 'templates/add_order.html', //templateUrl controller: 'AddOrderController' //this controller is being called. }). 

工作的解決方案! – Merlin

1

使用EMPTY template

when('/ShowOrders', { 
    template: '', //template 
    controller: 'ShowOrdersController' 
}). 
相關問題