javascript - 无法从angularjs ionic框架中的另一个 Controller 调用方法

标签 javascript angularjs ionic-framework

我想触发/调用从 LihatKhsControllerKhsControllercallkhs:

function KhsController($scope, $rootScope){
     $scope.$emit('callkhs', {param:'test'});
}

我尝试从 KhsController 获取参数到 LihatController:

function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param); //not show
    });
}

请帮我解决这个问题。

最佳答案

如果您使用$scope.$emit,它只会通知其父scope

像这样

<div ng-contoller="LihatKhsController">
 <div ng-controller="KhsController">
 </div>
</div>

JS

function KhsController($scope, $rootScope){
     $scope.$emit('callkhs', {param:'test'});
}
function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param); //not show
    });
}

此处 KhsController 将触发 LihatKhsController,因为 LihatKhsControllerKhsController 的一部分。

如果您使用 $scope.$broadcast ,它会通知它的子级

像这样

<div ng-contoller="KhsController">
 <div ng-controller="LihatKhsController">
 </div>
</div>

JS

function KhsController($scope, $rootScope){
     $scope.$emit('callkhs', {param:'test'});
}
function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param); //not show
    });
}

此处 KhsController 将触发 LihatKhsController,因为 KhsControllerLihatKhsController 的父级。

他们都不会考虑兄弟 Controller 之类的

<div ng-contoller="KhsController">
</div>
 <div ng-controller="LihatKhsController">
 </div>

$emit$broadcastrootScope 中略有不同。

如果您使用$rootScope.$emit,它只会在$rootScope.$on上发出通知。

如果您使用$rootScope.$broadcast,它不仅会通知$rootScope.$on,还会通知所有$scope.$on.

像这样

function KhsController($scope, $rootScope){
     $rootScope.$broadcast('callkhs', {param:'test'});
}

function LihatKhsController($scope, $rootScope){
    $scope.$on("callkhs", function(event, data){
      console.log('halo callkhs', data.param);
    });
}

关于javascript - 无法从angularjs ionic框架中的另一个 Controller 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34522409/

相关文章:

angularjs - Angular ng-重复日期格式

java - JPA 创建现有实体的精简实体版本

AngularJS 持续部署工具

css - ionic 应用程序文本与聊天应用程序一起离开 View 屏幕

Angular 4 RequestOption 对象不可分配给 post 方法

javascript - 使用 jQuery 创建新属性

javascript - 任何用于即时加载外部 JS 的 javascript 事件?

javascript - window.open 在 IE7-8-9b 中抛出无效参数

php - 相当于 PHP 的 call_user_func() 的 javascript

cordova - 如何通过文件传输在ionic和cordova中下载文件