2015-03-03 117 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

相关问题