[英]Angular JS $location.path(…) not firing route controller
[英]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.