【问题标题】:angularjs call another controller's functionangularjs 调用另一个控制器的函数
【发布时间】:2016-04-11 14:43:31
【问题描述】:

我有一个包含以下 ons-items 的 ons-list :

<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”,以便项目更改类。我需要访问该功能,以便我可以从另一个控制器更改类,我已经检查了其他问题的一些答案,但我无法做到正确,有没有办法完成这个?

这是我的 principal() 函数:

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

【问题讨论】:

  • 你可以为此使用广播和发射功能

标签: javascript html angularjs monaca


【解决方案1】:

在您正在使用的控制器中添加该功能。而不是像这样给一个按钮一个 ng-click

ng-click="principal(item)"

【讨论】:

  • 嗯...是的,如果您看到我粘贴的代码,您可以看到我已经在使用它,但这是为了访问同一个控制器,我必须能够从另一个控制器调用它控制器。无论如何,我最终按照 SSH 在评论中的建议使用了广播和 on,不过感谢您的评论!
【解决方案2】:

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

像这样声明我的控制器:

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

里面有一个广播事件:

$rootScope.$broadcast("ingresing");

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

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

并收听广播的事件:

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

非常感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    相关资源
    最近更新 更多