2016-12-09 3 views
3

У меня модальный в моем приложении Ionic, и когда модальный отображается, я хочу вызвать событие click для определенного элемента.Ионное событие нажатия триггера не работает

Controller 
$scope.$on('modal.shown', function() { 
     document.getElementById('somemodal').click(); // #1 
     $("#somemodal").triggerHandler("click"); // #2 
}); 


Index.html 
<h1 class="title" id="somemodal" ng-click="start()">info</h1> 

И # 1 и # 2 не вызывают нг щелчок, который вызывает функция запуска в другой контроллер.

Любое предложение или совет будут оценены.

спасибо.

+3

Мое предложение состоит в том, чтобы не делать манипуляции с DOM в вашем контроллере. – devqon

+0

@ Функция A.Woffff start() находится в другом контроллере по какой-либо причине. Именно по этой причине мне нужно вызвать ng-click на open. – smchae

+0

@devqon Спасибо за совет. Но каким образом можно запустить ng-click, чтобы я мог выполнять функцию? – smchae

ответ

1

Если оба контроллера находятся на том же уровне, использовать завод, как:

(function() { 
    'use strict'; 

    angular 
     .module('yourapp') 
     .factory('yourfactory', yourfactory); 

    yourfactory.$inject = [$rootScope]; 

    /* @ngInject */ 
    function yourfactory($rootScope) { 
     var service = { 
      start: start 
     }; 
     return service; 

     function start() { 
      $rootScope.$broadcast('dostart', {}); 
     } 
    } 
})(); 

Тогда в Контроллер 1 (с модальным):

$scope.$on('modal.shown', function() { 
     yourfactory.start(); // Don't forget to inject yourfactory 
}); 

И в контроллере 2:

$scope.$on('dostart', function(event, args) { 
    $scope.start(); 
}); 

Если оба контроллера не на том же уровне, что также можно сделать прямой $broadcast или $emit от первого контроллера без завода, в зависимости от иерархии ваших контроллеров

0

Вы должны попробовать это:

<label class="item"> 
    <div class="button button-block button-positive" ng-click="start()">info</div> 
</label> 

В контроллере:

$scope.start = function() 
{ 

} 
1

Я был в состоянии сделать это, выполнив ниже.

Controller 
$scope.$on('modal.shown', function() { 
     $rootScope.start(); 
}); 

Another Controller 
$rootScope.start= function() { 
     some code ... 
} 
0

Вы можете использовать ионную модель

$ionicModal.fromTemplateUrl('yourmodelhtml.html', { 
     scope: $scope 
    }).then(function(modal) { 
     $scope.confirm = modal; 
    }); 

затем вызвать этот $ scope.confirm открыть на событие щелчка.

Смежные вопросы