angularjs调用另一个控制器's函数

angularjs call another controller's function

本文关键字:函数 调用 另一个 控制器 angularjs      更新时间:2024-05-04

我有一个包含以下ons项的ons列表:

<ons-list-item style="font-family:roboto;font-size:17px" ng-class="{'selected-menu':selectedRow==0,'no-selected':selectedRow!=0}"
        modifier="tappable" class="list__item__line-height"
        onclick="app.slidingMenu.setMainPage('principal.html', {closeMenu: true})"
        ng-click="principal(0)">
        <i class="fa fa-home fa-lg"></i>
        &nbsp;Principal
</ons-list-item>
<ons-list-item style="font-family:roboto;font-size:17px" ng-class="{'selected-menu':selectedRow==1,'no-selected':selectedRow!=1}"
        modifier="tappable" class="list__item__line-height"
        onclick="app.navi.pushPage('ingreso.html', { animation : 'slide' } );app.slidingMenu.closeMenu()"
        ng-click="principal(1)">
        <i class="fa fa-car fa-md"></i>
        &nbsp;Nuevo Registro
</ons-list-item>

等等。。。

我有一个名为principal()的函数,它所做的是更改"$scope.selectedRow",以便该项更改类。我需要访问该函数,这样我就可以从另一个控制器更改类,我已经检查了其他问题的一些答案,但我一直做不好,有办法解决这个问题吗?

这是我的主要()函数:

$scope.principal = function(item){
    $scope.selectedRow = item;
}

在您正在使用的控制器中添加函数。而不是像这个那样点击一个按钮

ng-click="principal(item)"

正如SSH所建议的那样,我最终使用了广播,因此这归功于他,我所做的是:

申报我的控制器像:

module.controller('Ingreso', ['$scope','$rootScope',function($scope,$rootScope){

里面有一个广播事件:

$rootScope.$broadcast("ingresing");

和从菜单控制器(相同声明):

module.controller('Principal', ['$scope','$rootScope', function($scope,$rootScope) {

并收听briadcasted事件:

$rootScope.$on("ingresing", function(){
    $scope.selectedRow = 1;
}); 

非常感谢你的帮助!