Как заставить трансляцию $ scope. $ работать в Ipad? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть два контроллера, скажем, контроллер1 и контроллер2. У меня есть функция с именем function1, определенная в controller1. Когда я пытаюсь вызвать function1 из контроллера2 с помощью $ scope. $ Broadcast, он отлично работает в настольных браузерах.

Но это не входит в $scope.$on, которое записано в controller1 в браузере Ipad Chrome.

Я пробовал разные способы, чтобы это работало. импорт controller1 в controller2 и так далее. Но тогда переменные в браузере не отражают свои значения.

$scope.$on in controller1:

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

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

Controller2:

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

Может кто-нибудь сказать мне, что здесь не так? Или как я могу заставить эту работу работать и на Ipad.

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете попробовать $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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...