我的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。
任何建议或建议都将不胜感激。
谢谢。
答案 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事件。