没有前端控制器!在angularjs

没有前端控制器!在angularjs,angularjs,model-view-controller,Angularjs,Model View Controller,众所周知,任何MVC框架都有一个frontcontroller,比如sencha中的launch.js,symfony1中的frontend_dev.php,等等 但当我翻阅brad Green在第7章中的书:Angular JS时。这里提到没有这样的主要方法,因此我怀疑如何处理预执行函数或预配置/检查。有没有其他方法来处理这个问题 app.run()是您正在寻找的,在模块声明之后,您可以在那里处理任何预执行配置 app.run(["$rootScope", ....other dependen

众所周知,任何MVC框架都有一个frontcontroller,比如sencha中的launch.js,symfony1中的frontend_dev.php,等等

但当我翻阅brad Green在第7章中的书:Angular JS时。这里提到没有这样的主要方法,因此我怀疑如何处理预执行函数或预配置/检查。有没有其他方法来处理这个问题

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

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

}] );
app.run()

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

}] );

我猜你要找的是跑步阶段

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

从文档中:

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
  });
您可以在文档中查看

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

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.
    });

  }
)

我猜你要找的是跑步阶段

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

从文档中:

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
  });
您可以在文档中查看

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

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.
    });

  }
)

亲爱的穆罕默德,我没有看你的答案,不介意,在这里你为什么要接受一个与我的答案相同的答案,除了我的答案之外?亲爱的穆罕默德,我没有看你的答案,不介意,这里你有更多的疑问,我忘了问,若它充当前端控制器,这意味着它将在页面导航时执行,还是只运行一次?。如果我想在每个页面导航上检查我的用户授权/会话检查,它只运行一次,相当于asp.net mvc中的App_Start,它只在应用程序第一次运行时运行,这意味着每当页面刷新时,也会导致应用程序重新执行,如果您想在路由更改之间执行某些操作,看看
$locationChangeStart
$routeChangeStart
我扩展了我的答案,添加了一个示例,说明每次路线发生变化时,您可以做些什么。正如Mohammad Sepahvand提到的,您有像
$locationChangeStart
$routeChangeStart
这样的事件。还有一个疑问,我忘了问,如果它充当前端控制器,这意味着它将在页面导航时执行,还是只运行一次?。如果我想在每个页面导航上检查我的用户授权/会话检查,它只运行一次,相当于asp.net mvc中的App_Start,它只在应用程序第一次运行时运行,这意味着每当页面刷新时,也会导致应用程序重新执行,如果您想在路由更改之间执行某些操作,看看
$locationChangeStart
$routeChangeStart
我扩展了我的答案,添加了一个示例,说明每次路线发生变化时,您可以做些什么。正如Mohammad Sepahvand提到的,您有类似于
$locationChangeStart
$routeChangeStart
的事件。