AngularJS:如何在同一个2个控制器的多个实例之间提供独立通信?

时间:2015-06-29 02:13:13

标签: javascript angularjs

我有两个控制器分配给两个视图:

[ResultsView ng-controller =" ResultsCtrl"] [SearchView ng-controller =" SearchCtrl"]

搜索视图有许多复杂的过滤器/选项,并由用户填写,然后他/她可以按"搜索"在SearchView上,结果应该填充到网格中。

现在,我可以通过服务或使用 $ rootScope。$ broadcast 在两者之间发送信息。

这是我遇到的问题:

[ResultsView ng-controller =" ResultsCtrl"] [SearchView ng-controller =" SearchCtrl"] [ResultsView ng-controller =" ResultsCtrl"] [SearchView ng-controller =" SearchCtrl"] [ResultsView ng-controller =" ResultsCtrl"] [SearchView ng-controller =" SearchCtrl"]

如果我在同一页面上有多个 结果搜索部分,我怎样才能确保他们各自相互独立?使用Service方法,ResultsCtrl和SearchCtrl都具有已定义的服务

.controller("searchCtrl", ["$scope", "$searchHttp", function ($scope, $searchHttp) {
.controller("resultsCtrl", ["$scope", "$searchHttp", function ($scope, $searchHttp) {

因此,我无法更改控制器的每个实例在服务方面的行为方式。当一个 SearchCtrl 调用该服务时,它将修改每个 ResultsCtrl 实例。

同样使用广播 $ rootScope。$ broadcast(" searchResults" ... 将被每个 ResultsCtrl 实例选中。

那么最好的解决方法是什么?我想重用结果和搜索视图代码,因为它基本相同。但是我需要在同一页面上独立渲染每对。

1 个答案:

答案 0 :(得分:1)

我认为你需要的HTML结构是这样的。

vagrant reload

此HTML结构可帮助您独立使用在ResultsCtrl中创建的父搜索结果的搜索结果。

jsfiddle就在这里。 我希望这会对你有所帮助。 :)