簡體   English   中英

角度路線沒有發射控制器

[英]Angular route not firing controller

我在獲取執行路由的控制器時遇到問題。

基本上,我按如下方式注冊我的路線:

var App = angular.module('App', ['ngRoute', 'routesControllers']);

App.config(['$routeProvider',
function($routeProvider) {
    $routeProvider.
        when('/', {
            template: " ",
            controller: 'NewOrderCtrl'
        }).
        when('/:companyName/:orderNumber', {
            template: " ",
            controller: 'ViewOrderCtrl'
        }).
        otherwise({
            redirectTo: '/'
        });
}]);

在這里,我沒有在模板中定義任何內容,因為我使用我的路由來激活ajax GET。

我的控制器如下:

var routesControllers = angular.module('routesControllers', []);

routesControllers.controller('NewOrderCtrl', ['OrderManagerFactory', function(OrderManagerFactory) {

  alert('NewOrderCtrl fired!');

  //create a new empty company and order
  OrderManagerFactory.createNewCompany();
  OrderManagerFactory.createNewOrder();

}]);

routesControllers.controller('ViewOrderCtrl', ['OrderManagerFactory', '$routeParams', function(OrderManagerFactory, $routeParams) {

  alert('ViewOrderCtrl fired!');

  //Fire a bunch of ajax calls using the data from $routeParams

}]);

我還為我的空視圖添加了一個div:

<div ng-view ng-controller="ViewOrderCtrl"></div>

當我訪問#/tesla/x123x ,我什么都沒得到。 其中一個控制器中的alert()不執行...

有人可以幫忙嗎? 我錯過了什么?

您可以使用resolve而不是嘗試使用controller ...在某種程度上,它不是真正的控制器。

resolve - {Object。=} - 應該注入控制器的可選依賴關系映射。 如果這些依賴項中的任何一個是promise,路由器將等待它們全部被解析或者在實例化控制器之前被拒絕。 https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

所以類似於:

 $routeProvider.when('/', { resolve: { init: 'NewOrderService' } });

並將控制器更改為工廠或服務:

routesControllers.service('NewOrderService', ['OrderManagerFactory', function(OrderManagerFactory) {

  alert('NewOrderService fired!');

  //create a new empty company and order
  OrderManagerFactory.createNewCompany();
  OrderManagerFactory.createNewOrder();

}]);

編輯

如果路由有一些參數,可以通過$routeParams訪問這些參數。

工廠/服務依賴於$routeParams不是可重用的模式,因此更新resolve屬性以使用函數將有助於:

再次從文檔中:

請注意, ngRoute.$routeParams仍將引用這些解析函數中的上一個路由。 $route.current.params使用$route.current.params來訪問新的路由參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM