无法调用$ stateProvider,两次更新视图(它只是第一次工作)

时间:2015-09-21 10:08:48

标签: javascript angularjs angularjs-routing

我有一个搜索图书页面,当我点击搜索标签时,根据搜索条件,它会在相邻的块中显示结果。但是当我第二次点击它时,它无效!

页面的相关html代码:

<form action="#" method="post" ng-controller = "OptionsController as oCtrl">

         <select class="selectpicker btn btn-default" name="SearchCriteria" id ="sOptions">
                <option value="1">Title</option>
                <option value="2">Author</option>
         </select>

         <label class="searchbox">
         <span><br></span>
               <textarea id="searchBox" name="searchBox" value="" type="text" autocomplete="on" placeholder="search books"></textarea>
         </label>

         <input type="button" value="Search" id = "bsearch" class="submit button" ui-sref = ".searchResults">                       

        </form>
<div id = "spaceforresults" ui-view = "" autoscroll="false"> </div>

我的用于路由的角度js代码

routerApp.config(function($stateProvider, $urlRouterProvider) {

$urlRouterProvider.otherwise('/home');

$stateProvider
.state('books.searchResults', {
    url: '',
    templateUrl: 'html/searchResults.html',
    controller: 'BookController',
});

因此,当我单击搜索按钮时,结果将按预期弹出。然后,如果我更改选项并再次单击搜索按钮,则不会路由视图(更新结果)。我在这做错了吗?

2 个答案:

答案 0 :(得分:1)

刷新

将状态重新加载设置为下面的真实示例

$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams

取自here请给原作者道具。

答案 1 :(得分:0)

我得到了答案!通过在不同的状态下使用$ state.go,我们可以明确要求路由器根据触发的事件重新加载内容。

然后我的angularjs代码被修改为

routerApp.config(function($stateProvider, $urlRouterProvider) {

$urlRouterProvider.otherwise('/home');

$stateProvider
.state('books.searchResults', {
url: '',
templateUrl: 'html/searchResults.html',
controller: 'BookController',
})

$stateProvider
.state('books.reloader', {
controller: function($state) {
      $state.go('^.searchResults');
    }
});

并以表格形式

<input type="button" value="Search" id = "bsearch" class="submit button" ui-sref = ".reloader">

这个答案来自这个post