2015-03-03 57 views
0

在從$ stateProvider及其緩存中從cacheTemplate中移除狀態後,嘗試添加相同的狀態名稱時會給我一個「已定義的」錯誤。如何從狀態中移除狀態提供程序

clearStates: function() { 
     var states = this.$state.get(); 
     for (var i = 0; i < states.length; i++) { 
      if (states[i].name != 'shell.error404' && 
       states[i].name != 'shell.error500' && 
       states[i].name != 'shell' && 
       states[i].name != '') { 
       var tmplUrl = states[i].templateUrl; 
       if (tmplUrl) { 
        this.templateCache.remove(tmplUrl); 
       } 
       delete states[i]; 
      } 
     } 
    } 

有什麼辦法做到這一點?

回答

0

嘗試

clearStates: function() { 
      var states = this.$state.get(); 
      var itemsToBeRemoved = []; 
      var removalIndex = 0; 
      for (var i = 0; i < states.length; i++) { 
       if (states[i].name != 'shell.error404' && 
        states[i].name != 'shell.error500' && 
        states[i].name != 'shell' && 
        states[i].name != '') { 
        var tmplUrl = states[i].templateUrl; 
        if (tmplUrl) { 
         this.templateCache.remove(tmplUrl); 
        } 
        //delete states[i]; 
        itemsToBeRemoved[removalIndex++] = i; 
       } 
      } 
      for(var j=0;j<itemsToBeRemoved.length;j++){ 
       states.splice(itemsToBeRemoved[j],1); 
      } 
     } 

存儲索引(一個或多個)被刪除,並使用states.splice(>索引<,1),而不是刪除狀態[I]

刪除葉在一個空元素給定索引處的數組,這可能是您問題的原因。

+0

它不工作,同樣的錯誤不斷顯示「狀態已定義」。我認爲沒有這樣的解決方案的UI路由器。在這裏解釋https://github.com/angular-ui/ui-router /問題/ 1095 – sercan 2015-03-09 09:59:10

相關問題