【问题标题】:how to make $scope.$broadcast work in Ipad?如何使 $scope.$broadcast 在 Ipad 中工作?
【发布时间】:2019-04-16 06:44:13
【问题描述】:

我有两个控制器,比如控制器 1 和控制器 2。 我在控制器 1 中定义了一个名为 function1 的函数。 当我尝试使用 $scope.$broadcast 从控制器 2 调用 function1 时,它在桌面浏览器中运行良好。

但是在Ipad浏览器chrome的controller1中写的$scope.$on没有进入。

我尝试了不同的方法来实现这一点。将控制器 1 导入控制器 2,依此类推。但是浏览器中的变量并不能反映它的值。

$scope.$on in controller1:

$scope.$on("con1function", function(event, activity, action) {

    $scope.function1(activity,'dashboard');
})

控制器2:

$scope.con2function = function() {
    $scope.$broadcast("con1function",data[0], '');
}

谁能告诉我这里出了什么问题?或者我可以通过什么方式让 Ipad 也能正常工作。

【问题讨论】:

    标签: angularjs ipad mobile-devices


    【解决方案1】:

    您可以尝试$rootScope.$broadcast("con1function","Hi there") 广播消息并尝试$scope.$on() 接收。

    如果您的控制器不相关(作为父或子),那么 $scope.broadcast$scope.emit 可能不起作用。

     var myApp = angular.module('myApp',[]);
     myApp.controller('controller1', function ($scope,$rootScope) {
         $scope.sendMessage = function(){
          console.log("in sendMessage");
          $rootScope.$broadcast("con1function","Hi there")
         }
        });
      myApp.controller('controller2', function ($scope,$rootScope) {
          console.log("in controller2");
          $scope.$on("con1function", function(event, activity) {
            console.log('dashboard',activity);
          });
        });
    

    还要确保在您的脚本或 HTML 中加载了所需的控制器。

    【讨论】:

    • 感谢您的大力帮助。它按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2016-06-09
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多