2014-03-19 35 views
0

大家都知道,任何的MVC框架有一個frontcontroller,像煎茶launch.js,frontend_dev.php在symfony1等。沒有前控制器!在angularjs

但當我經歷的書:角JS由布拉德·格林,在第7章中提到沒有這種主要方法,所以我懷疑如何處理預執行功能或預配置/檢查。有沒有其他方法可以解決這個問題。

+0

爲什麼接受與我的回答完全相同的回答,除了它是我的回答? –

+0

親愛的穆罕默德,我不敢看你的答案,不介意的話,在這裏你去 –

+0

感謝很多:) –

回答

2

app.run()是你在找什麼,你的模塊聲明之後,你可以處理任何執行前CONFIGS那裏。

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

}]); 
+0

多了一個疑問,我忘了問,如果這作爲前端控制器,是手段,它將執行時曾經的頁面導航,還是隻運行一次?如果我要檢查每個頁面導航 –

+0

我的用戶授權/會話確認它運行只有一次,這是App_Start在asp.net的MVC相當於本只運行了第一次你的應用程序運行,這意味着無論何時也頁面刷新,這會導致重新執行的應用程序,如果你想要做的路由變化之間的事情,看看'$ locationChangeStart'和'$ routeChangeStart' –

+1

我伸出我的答案補充你可以做的每一個做一些什麼樣的例子時間有變化的路線。正如Mohammad Sepahvand提到你有像'$ locationChangeStart'和'$ routeChangeStart'這樣的事件。 –

2

我想你要找的是運行階段。

在運行階段,所有的設立運行,並啓動之前,你可以執行CONFIGS任何特定的控制器,添加處理程序等

從文檔:

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

    } 
)