AngularJS在更改路线时清除模型

我有一个过滤器&我的固定标题包含下拉列表(用于过滤器)和输入字段(用于搜索)的搜索功能。AngularJS在更改路线时清除模型

对于下拉我使用这个Angularjs-dropdown-multiselect

目前,提交申请后,用户将被引导到结果页面和下拉菜单和输入文本模型内容被保留,这就是我多么希望它成为。问题是,如果用户转到结果页面以外的页面,我想重置模型(回到空)。

HTML:

<div class="col-sm-3"> 

<div class="dropdown" ng-dropdown-multiselect="" options="cats" selected-model="catModel" checkboxes="true" translation-texts="{buttonDefaultText: 'Categories'}"></div>

</div>

<div class="col-sm-3">

<div class="dropdown" ng-dropdown-multiselect="" options="ccs" selected-model="ccModel" checkboxes="true" translation-texts="{buttonDefaultText: 'Credit Cards'}"></div>

</div>

<div class="col-sm-6">

<form data-ng-submit="findValue(catModel, ccModel, keyword)" >

<div class="input-group search-bar">

<input type="search" class="form-control" placeholder="Search for..." data-ng-model="keyword">

<span class="input-group-btn">

<button class="btn btn-search" type="button" data-ng-click="findValue(catModel, ccModel, keyword)"><img src="img/icon_search.png" alt="Search" /></button>

</span>

<input type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;"/>

</div>

</form>

</div>

JS:

.controller('mainController', ['$scope', '$http', '$location', 'dataFactory', 

function ($scope, $http, $location, dataFactory){

dataFactory.getCategories().success(function (data){

$scope.cats = data;

});

dataFactory.getCcs().success(function (data){

$scope.ccs = data;

});

$scope.catModel = [];

$scope.ccModel = [];

$scope.findValue = function(catModel, ccModel, keyword) {

var searchUrl = baseUrl;

var catID = '';

if(catModel.length > 0) {

searchUrl += 'categoryID=';

angular.forEach(catModel, function(value, key) {

if(key < catModel.length - 1) {

searchUrl += value.id + ',';

catID += value.id + ',';

} else {

searchUrl += value.id;

catID += value.id;

}

})

if(ccModel.length > 0 | keyword != null) {

searchUrl += '&';

}

}

if(ccModel.length > 0) {

searchUrl += 'ccID=';

angular.forEach(ccModel, function(value, key) {

if(key < ccModel.length - 1) {

searchUrl += value.id + ',';

} else {

searchUrl += value.id;

}

})

if(keyword != null) {

searchUrl += '&';

}

}

if(keyword != null) {

searchUrl += 'search_keyword=' + keyword;

}

$http.get(searchUrl).success(function (data) {

$scope.results = data;

$scope.pageTitle = 'Promotions search result';

$location.path('/promotion');

})

}

}

我把模型和函数内部mainController,因为头是每个视图。

我在AngularJS和编程方面很新,所以这段代码可能不正确,请让我知道是否有更简单和正确的方法。任何帮助表示赞赏。 谢谢

回答:

您可以订阅以下事件$locationChangeSuccess,这些事件将在每个位置更改时触发。 在里面你可以重置你的模型。

只是声明

$rootScope.$on('$locationChangeSuccess', function() { 

//reset your model here

});

以上是 AngularJS在更改路线时清除模型 的全部内容, 来源链接: utcz.com/qa/265961.html

回到顶部