I want to run some initialization code in my controller when loading a view. I tried it with ng-init but I dont think this is a good approach:
<div ng-init="init()">
  My app
</div>AngularJS controller:
$scope.init = function () {
    console.log('view ready');
}I wonder if this is the right way to run some code in my controller once the view is loaded / ready.
In AngularJS you can use $onInit which is available on any AngularJS component: component lifecycle documentation. You can use it on a factories, controllers, services or modules.
var app = angular.module('app',[]);
app('SomeController', function ($scope) {
    //init state
    $scope.myVariable = '';
    //controller binding on view initialized
    this.$onInit = function () {
      $scope.myVariable = 'Hello World!';
    }
});$onInit() - Called on each controller after all the controllers on an element have been constructed and had their bindings initialized (and before the pre & post linking functions for the directives on this element). This is a good place to put initialization code for your controller.