2016-05-21 4 views
2

私は検索フィールドを持っており、検索ボタンをクリックすると、検索フィールドに入力された値を使ってデータを検索します。これは私のコードです。ルートプロバイダからコントローラにスコープ値を渡すにはどうすればよいですか?

HTMLコードここ

<a href="#/home">Home</a> 
<label class="item item-input"> 
    <input type="text"><a ng-href="#/search/{{searchVal}}" ng-model="searchVal">Search</a> 
</label> 

JSコード

angular.module('myApp', ['ngRoute']) 
.controller('searchController', function($scope, $http, $routeParams) { 
    var name = $routeParams.name; 
    alert(name) 
}); 

angular.module('myApp') 
    .config(function($routeProvider) { 
    $routeProvider. 
     when('/home', { 
     templateUrl: 'home.html' 
     }). 
     when('/search/:name', { 
     templateUrl: 'search.html', 
     controller: 'searchController' 
     }). 
     otherwise({ 
     redirectTo: '/home' 
     }); 
}); 

私はrouteProviderに検索値を渡す傾けます。検索値をrouteProviderに渡してsearchControllerにアクセスする方法

コントローラーでrouteParamsを使用しましたが、検索フィールドの値を取得できませんでした。

したがって、searchControllerの値を取得するにはどうすればよいですか?これはPlnkr

+0

は、コントローラでの取り扱い 'href'のインデックスコントローラを追加することがOKです。 ''が ''の内部で動作していない可能性が非常に高いです – Sajal

答えて

1

routeParamsがparamを認識するためのルート定義で検索パラメータを定義する必要があります。

when('/search/:name', { 
    templateUrl: 'search.html?query', 
    controller: 'searchController' 
}) 

routeParams.queryを使用してコントローラの値を取得できます。

0

ng-modelinputではなく<a>に割り当てられています。

<a href="#/home">Home</a> 
<label class="item item-input"> 
    <input type="text" ng-model="searchVal"><a ng-href="#/search/{{searchVal}}">Search</a> 
</label> 

ワーキングPlunker:あなたのコードでhttp://plnkr.co/edit/LWjHX5XzXINnkNBwGq42?p=preview

0

唯一の問題は、inputタグで代わりにアンカータグでNG-モデルを関連付けることです。入力ボックスに値を入力し、ng-modelに直接関連付けられているためです。以下は

がなさに持って変更である:

<a href="#/home">Home</a> 
<label class="item item-input"> 
    <input type="text" ng-model="searchVal"><a ng-href="#/search/{{searchVal}}">Search</a> 
</label> 
関連する問題