2014-09-04 108 views
3

我有一个基本的搜索结果页面。这是我的UI路由器配置:ui路由器阻止transitionTo重新加载父状态

$stateProvider 
     .state('search', { 
      url: '/search', 
      templateUrl: 'app/templates/search.html', 
      controller: 'searchController' 
     }) 
     .state('search.results', { 
      url: '/results/:searchParameters', 
      templateUrl: 'app/templates/results.html', 
      controller: 'resultController' 
     }); 

这是我送参数从搜索到实际执行GET

$scope.search = function() { 
     if (!$state.is('search.results')) { 
      $state.go('search.results', { searchParameters: $scope.searchParameters }); 
     } 
     else { 
      $state.transitionTo('search.results', { searchParameters: $scope.searchParameters }, { reload: true, inherit: true, notify: true }); 
     } 
    }; 

search.results,这是我的search.html

<div class="row"> 
    <form name="parameters" role="form" class="form-search" novalidate> 
     <input type="text" class="form-control uppercase" placeholder="Codice manifestazione" 
       ng-enter="search()" ng-model="searchParameters.maniCode" /> 
     <input type="number" class="form-control" placeholder="Anno" 
       ng-enter="search()" ng-model="searchParameters.year" maxlength="4" required/> 
     <br /> 
     <label>Stato manifestazioni:</label> 
     <select ng-enter="search()" ng-model="searchParameters.open" ng-init="searchParameters.open = true"> 
      <option value="true">Aperte</option> 
      <option value="false">Chiuse</option> 
     </select> 
     <br /> 
     <br /> 
     <input type="button" value="Cerca" class="btn btn-default" 
       ng-click="search()" 
       ng-disabled="(parameters.$invalid || parameters.$pristine) || (clicked && !loaded)"/> 
     <input type="button" value="Esporta in Excel" class="btn btn-default" 
       ng-click="excelMain()" 
       ng-disabled="(parameters.$invalid || parameters.$pristine) || (clicked && !loaded)" /> 
     <br /> 
     <br /> 
     <ul class="noStyleUl"> 
      <li ng-show="searchParameters.year.length < 4">Inserisci un anno per abilitare la ricerca</li> 
     </ul> 
    </form> 
    <div ui-view> 

    </div> 
</div> 

不幸的是$ state.transitionTo不仅会重新加载search.results(好),还会重新加载搜索(坏!),从而清理我的表单。

我现在所做的就是从ResultsController向SearchController发送一个事件,以便恢复范围并从而“重新填充”表单。我想知道是否有更好的解决方案。

谢谢。

回答

0

我看到那个时候你并不了解服务。只需使用服务!你的模型将作为一个可以从任何你可以引用它的地方绑定的单例。这样,如果ui-router使控制器的1或3个实例发生变化,您将不必担心。

相关问题