Angular 1.6.1使用routeProvider触发器动态加载Html没有控制器。$ onInit

时间:2017-06-01 10:00:23

标签: angularjs

我使用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和。

任何想法为什么它不起作用?

2 个答案:

答案 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但它​​很棒。