我使用angular构建了一个小应用程序,并添加了routeProvider来更改我的ContentView。我不同的htmls之间的切换工作,我可以在我的HTML中使用汽车和功能。
var app = angular.module("mainApp", ['ngRoute']);
angular.module("mainApp").config(
[ '$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider.when("/", {
templateUrl : './page1.html',
controller : 'con1'
}).when("/stuff", {
templateUrl : './page2.html',
controller : 'con2'
}).when("/404", {
templateUrl : "./errorPage.html"
})
// else 404
.otherwise({
redirectTo : "/404"
});
} ]);
我添加了功能:
this.$onInit = function() {console.log("test"); };
当控制器处于启动模式时,请执行此操作。 (注意:我在其他项目中添加了这个模式,但在这个新项目中它不会加载它。$ onInit)
我正在使用Angular 1.6.1作为Webjar和。
任何想法为什么它不起作用?
答案 0 :(得分:1)
Life-cycle hooks were introduced for directive/component controllers.
它们不会触发$routeProvider
映射中使用的控制器。
您可以查看此jsfiddle并在控制台中查看输出。
答案 1 :(得分:0)
很抱歉没有尽快回答。是的,如果routingProvider调用Controller,那么lifecyle不会调用init。
我通过manuelle触发init来解决它。我通过使用data-ng-controller =“myController”将控制器添加到主体(容器)来完成此操作
这会在pageload上调用init。有点hacky但它很棒。