javascript - AngularJS 查询参数

标签 javascript angularjs angular-ui-router

我有一个使用 UI Router 的小型搜索应用程序,如下所示:

    'use strict';

angular.module('searchApp.routes', ['ui.router'])
    .config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {

        $locationProvider.html5Mode(true);

        $stateProvider
           .state('home', {
            url: '/home',           
            templateUrl: 'home/home.html',
            controller: 'SearchCtrl'})         
          .state('search', {            
            templateUrl: 'search/search.html',
            url: '/search?q',           
            controller: 'SearchCtrl'
          });    
    $urlRouterProvider.otherwise('/home');
}]);

因此,您可以看到两 (2) 个状态、两 (2) 个模板和一 (1) 个 Controller 。不正确的是,从主状态到搜索状态,搜索功能需要两次提交才能显示结果,如果用户想要输入不同的查询,则在搜索状态上也需要同样的提交。

查询已根据需要显示在网址中,但随后需要再次提交才能显示结果...?

我在 SearchCtrl 中像这样初始化 $stateParams

$scope.searchTerms = $stateParams.q || '';

其中 searchTerms 是搜索表单上我的 ng-model。

我在搜索功能的 SearchCtrl 中有这样的 $state.go() 设置

$state.go('search', {q: $scope.searchTerms});

我错过了什么和/或做错了什么?

最佳答案

将 url: '/search?q' 更改为 url: '/search/:q' 并尝试从 $stateParams.q 获取值

 .state('search', {            
        templateUrl: 'search/search.html',
        url: '/search/:q',           
        controller: 'SearchCtrl'

关于javascript - AngularJS 查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104958/

相关文章:

javascript - 哪个浏览器率先推出了 JIT 编译的 JavaScript?

c# - 如果 Visibility 设置为 false(使用 C#),则访问隐藏字段值

javascript - AngularJS 在 ngClass 更改后执行作用域函数

javascript - 如何从 chrome 扩展访问 angularjs 根范围

javascript - 优惠券验证

javascript - Angular 2 : how to "reload" page with router (recheck canActivate)?

javascript - 无法在 Firefox 4/IE 中更改 iFrame 内容

javascript - 注入(inject) angular.js 时出错

javascript - Angular 5将数据传递给子路由

angularjs - 从 $rootscope angularjs 访问 $scope