没有前置前置控制器!在angularjs

时间:2014-03-19 04:29:25

标签: angularjs model-view-controller

众所周知,任何MVC框架都有一个前控制器,如sencha中的launch.js,symfony1中的frontend_dev.php等。

但正如我正在阅读本书:由布拉德·格林撰写的Angular JS,在第7章中,提到没有这样的主要方法,所以我怀疑如何处理预执行功能或预先配置/检查。有没有其他方法来处理这个问题。

2 个答案:

答案 0 :(得分:2)

app.run()是您正在寻找的,在您的模块声明之后,您可以处理任何预执行配置。

app.run(["$rootScope", ....other dependencies
         function ($rootScope,....) {

}] );

答案 1 :(得分:2)

我猜你正在寻找的是跑步阶段。

在运行阶段,所有设置都会运行,在启动任何特定控制器之前,您可以执行配置,添加处理程序等。

来自文档:

angular.module('myModule', []).
  config(function(injectables) { // provider-injector
    // This is an example of config block.
    // You can have as many of these as you want.
    // You can only inject Providers (not instances)
    // into config blocks.
  }).
  run(function(injectables) { // instance-injector
    // This is an example of a run block.
    // You can have as many of these as you want.
    // You can only inject instances (not Providers)
    // into run blocks
  });

您可以在文档here中查看。

此阶段根据您的需要运行并添加事件。例如,如果您希望每次检测到某些操作时页面更改的开始,您可以执行以下操作:

myapp.run(
  function ($rootScope) {

    $rootScope.$on('$routeChangeStart', function () {
      // Do something when the stateChange starts
    });

    $rootScope.$on('$routeChangeSuccess', function () {
      // Do something else when the state change is successful.
    });

  }
)