2015-11-23 5 views
5

検索機能のために私のページにmvcパーシャルコントロールを2回使用しました。 それは私のページが同じ名前の2つのコントローラを持っているので、それ自身のコントローラを検索することがあります。同じコントローラがページ内で2回使用されている場合、モデルは互いに反映されなくなります

<div ng-app="app" ng-controller="MainController" ng-init="SetSearchParam()"> 
    <div id="search1"> 
     @Html.Partial("_SearchPartial") // say it search1 
     // some other code to show search results 
     // ....    
     // .. 
    </div> 
    <div id="search2"> 
     @Html.Partial("_SearchPartial") // say it search2 
     // some other code to show search results 
     // ....    
     // .. 
    </div> 
</div> 

これは_SearchPartialある:

<form name="SearchCommon"> 
    <div ng-model="search" ng-controller="SearchPartialController"> 
      <div> 
       <input type="text" value="" placeholder="Stock" ng-model="search.Stock" /> 
      </div> 

      <div> 
       <input type="text" value="" placeholder="Make" ng-model="search.Make" /> 
      </div> 

      <div> 
       <input type="text" value="" placeholder="Year" ng-model="search.Year" /> 
      </div> 

      <div> 
       <input type="submit" value="SEARCH" ng-click="searchdata(search)" /> 
      </div> 
    </div> 
</form> 

すぐMainControllerのINITに、iは以下のようSetSearchParam()方法でsearchモデル値を設定:

$scope.SetSearchParam = function(){ 
    var s = {}; 
    s.Make = "Test"; 
    s.Year = "2012"; 
    s.Stock = "5" 

    $scope.search = s; 
}; 

searchとしてモデルSearchPartialControllerで使用され、ページには2つの検索制御があり、値はsですコントローラ。また、私がsearch1のparamsを変更すると、search2も反映されます。

これらの検索パラメータはsearch1にのみ設定し、search2には設定しないでください。 search1パラメータを変更すると、search2を反映してはなりません。逆も同様です。

これを達成する方法はありますか?

答えて

0

私はあなたの機能の前にフィルタ(検索)を初期化する必要があります。

コントローラー:

$scope.search1 = { Make : "Test", Year: "2012", Stock : "5" }; 
$scope.searchdata = function(search){console.log(search);}; 

あなたのビュー:

<body ng-controller="SearchPartialController"> 
    <form ng-submit="searchdata(search1)"> 
     <input type="text" placeholder="Stock" ng-model="search1.Stock" /> 
     <input type="text" placeholder="Make" ng-model="search1.Make" /> 
     <input type="text" placeholder="Year" ng-model="search1.Year" /> 
     <button type="submit" class="btn btn-sm btn-primary"> 
        Save 
     </button> 
    </form > 
</body> 
関連する問題