我有一个搜索图书页面,当我点击搜索标签时,根据搜索条件,它会在相邻的块中显示结果。但是当我第二次点击它时,它无效!
页面的相关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',
});
因此,当我单击搜索按钮时,结果将按预期弹出。然后,如果我更改选项并再次单击搜索按钮,则不会路由视图(更新结果)。我在这做错了吗?
答案 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