两个搜索视图访问同一个控制器

时间:2016-01-06 04:27:16

标签: angularjs

我正在建立一个酒店网站,并在我的主页上有一个搜索目的地,到达,离开等。

我也将搜索集成在网站的不同页面上。这被用作我的模板中的包含,并且我使用ng-show将其隐藏在我的主页上,因为我想在主页上使用带有搜索字段的整页jumbotron。

因此我的观点不同,但功能完全相同。

我的主视图正在寻找家庭控制器,我的搜索视图正在寻找我的搜索控制器。

我已经设置了一个全局控制器(我为css添加了页面标题和活动导航状态等功能)所以对我而言,这将是两个搜索表单都可以访问并传递所需数据的地方。

我的全局控制器被添加到body标签中,我可以使用console.log访问它。

我以为我可以在两种表格上访问ng-submit="globalController.setDestination()",但没有任何反应。

如何通过usng ng-submit访问全局控制器?我是否需要这些去他们的相关控制器然后以某种方式路由它? 2个视图是否有更好的方法来访问/传递相同的数据?

我知道我可以提供服务但是我也有很多$scope个元素,所以我认为通过将2个视图传递给1个控制器可能会让这个干掉。

<form name="destinationSearch" ng-submit="globalController.setDestination()">

我的模板的一部分

<body ng-cloak ng-controller="globalController">

    <div id="wrap">  
        <header class="hidden-xs-up">
            <h1 ng-bind="$state.current.data.pageTitle"></h1>
        </header>

        <!-- Load the header -->
        <div ng-controller="NavController" ng-include src="'app/components/core/nav.html'"></div>
        <!-- /header -->
        <div>
            <!-- Load Search -->
            <div ng-show="globalData.showSearchBar">
                <div ng-include src="'app/shared/search/searchView.html'"></div>
            </div> 

            <!-- /search -->
            <!-- Angular -->
            <div ui-view></div>
            <!-- /Angular -->
        </div>
    </div>

2 个答案:

答案 0 :(得分:1)

尝试使用controllerAs语法

<body ng-cloak ng-controller="globalController as gc">

然后使用

<form name="destinationSearch" ng-submit="gc.setDestination()">

查看this了解更多信息。

答案 1 :(得分:0)

尝试使用 $ parent 语法:

ng-submit="$parent.setDestination()"

此链接可能有用:AngularJS access parent scope from child controller