我有一個AngularJS應用程序,我想在其中加載一些由控制器在啓動時發現的插件。爲了讓插件工作,我添加了一些路由到控制器的$routeProvider
,但似乎沒有辦法做到這一點。如何從AngularJS控制器內部更新路線?
現在我使用的是非常醜陋的黑客如下:在該插件的路線
var routeProvider;
angular.module('example', [], function($routeProvider) {
routeProvider = $routeProvider;
// Set up other routes
}
function Controller($http, $location, $timeout) {
// Use $http to find some plugin
routeProvider.when(plugin.url, plugin.options);
// Ugly hack so that the plugin appears if $location.path() already points to it
var path = $location.path();
$location.path("/");
$timeout(function() { $location.path(path); }, 10);
}
如果我不$timeout
做廢話那麼如果我開始(加載頁)它將不會加載($route.current
保持空白)。隨着路徑之間的跳轉,路由得到正確解決,並且插件視圖按照它應該加載的方式加載。
有沒有更好的方法來做到這一點?