离子触发点击事件不起作用

时间:2016-12-09 09:37:24

标签: javascript jquery ionic-framework ionic-view

我的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都没有触发在另一个控制器中触发功能启动的ng-click。

任何建议或建议都将不胜感激。

谢谢。

4 个答案:

答案 0 :(得分: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', {});
        }
     }
})();

然后在Controller 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,具体取决于控制器的层次结构

答案 1 :(得分:1)

我可以通过以下方式做到这一点。

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

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

答案 2 :(得分:0)

你应该试试这个:

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

在您的控制器中:

$scope.start = function() 
{

}

答案 3 :(得分:0)

您可以使用离子模型

Min + (int)(Math.random() * ((Max - Min) + 1))

然后调用此$ scope.confirm来打开click事件。