按钮单击时将参数传递给路径

时间:2014-06-07 17:47:49

标签: angularjs angularjs-scope angularjs-routing

我是AngularJs的新手。我有一个带有按钮的搜索框,该按钮符合Angular应用程序配置中定义的路径。

<div class="search-block clearfix">
  <div class="input-group">
    <input type="text" placeholder="search here..."  class="form-control input-sm">
    <div class="input-group-btn">
      <button type="button" class="btn btn-default btn-sm" go-click="search.htm">Search</button>
    </div><!-- /btn-group -->
  </div><!-- /input-group -->
</div>

添加路由配置的代码段:

myApp.config(function ($routeProvider){
  $routeProvider.
    .when('/search.htm',
     {
        controller:'controllers.SearchCtrl',
        templateUrl:'/partials/search/searchPage.html'
     })
    .otherwise({ redirectTo: '/' });
   ....

添加指令(go-click)代码:

    myApp.directive( 'goClick', function ( $location ) {
      return function ( scope, element, attrs ) {
        var path;
        attrs.$observe( 'goClick', function (val) {
        path = val;
      });
       element.bind( 'click', function () {
         scope.$apply( function () {
          $location.path( path );
      });
    });
  };
});

1 个答案:

答案 0 :(得分:0)

您可以使用$route$routeParams服务将参数传递给新路线。

如果您将路线更改为:

.when('/search.htm/:paramName',
     {
        controller:'controllers.SearchCtrl',
        templateUrl:'/partials/search/searchPage.html'
     })

然后重定向到search.htm/someParam

然后参数someParam将在路径的控制器中作为服务$routeParams(包含参数的对象)或$route服务下的$route.current.params服务提供(这是同一个对象)。

docs

中介绍了这一点