如果在页面中使用两次相同的控制器,则停止反映彼此的模型

Har*_*iya 5 javascript angularjs

我在我的页面中使用了mvc部分控制两次搜索功能.它有自己的控制器来搜索,所以我的页面有两个同名的控制器.

<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>
Run Code Online (Sandbox Code Playgroud)

这是_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>
Run Code Online (Sandbox Code Playgroud)

现在在init MainController,我searchSetSearchParam()下面的方法中设置模型值:

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

   $scope.search = s; 
};
Run Code Online (Sandbox Code Playgroud)

由于search模型用于SearchPartialController,并且页面有两个搜索控件,s因此将在两个部分控制器中设置值.此外,当我在search1中更改params时,它将反映search2.

我希望那些搜索参数只设置为search1,而不是search2.当我改变search1 params时,它不应该反映search2,反之亦然.

有没有办法实现它?

Bak*_*oev 0

我认为你应该在函数之前初始化你的过滤器(搜索)。

控制器:

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

您的看法:

<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>
Run Code Online (Sandbox Code Playgroud)