2017-07-24 41 views
0

我有一個狀態的時候,我去了$ state.go確保代碼正在運行的每一個控制器中執行

讓我們稱之爲國家stateName,關聯到templateName,和templateName調用controllerName

我的印象中,controllerName不運行每次我用$state.go(stateName)時間(這個印象來自使用的console.log內controllerName

到目前爲止,我的「修復」是用$scope.$on('$stateChangeSuccess' ...和檢查stateName。但是那感覺很脆弱:如果我改變狀態的名字,我需要改變控制器內的代碼。

我的問題:

1)這是真的,加載templateName當控制器並不總是叫什麼名字?

2)有沒有辦法確保controllerName每次被調用?或者至少有一些函數在裏面呢?

+0

嘗試''state.go(stateName,{},{reload:true})' –

+0

添加您的路由器代碼 – Rakeschand

回答

0

一個哈克解決方案,我發現是迫使$狀態重裝選項:

myApp.config(function ($provide) { 
    $provide.decorator('$state', function ($delegate) { 

    var state = $delegate; 

    state.baseGo = state.go; 


    var go = function (to, params, options) { 
     options = options || {}; 

     if (angular.isUndefined(options.reload)) { 
      options.reload = true; 
     } 

     this.baseGo(to, params, options); 
    }; 

    state.go = go; 

    return $delegate; 
    }); 
}) 

這樣,當你完全導航狀態重載。

相關問題