离子触发点击事件不起作用
Ionic trigger click event does not work
我的 Ionic 应用程序中有一个模态,当显示模态时,我想在特定元素上触发点击事件。
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 触发 function start in another controller.
如有任何建议或建议,我们将不胜感激。
谢谢。
你应该试试这个:
<label class="item">
<div class="button button-block button-positive" ng-click="start()">info</div>
</label>
在你的控制器中:
$scope.start = function()
{
}
如果两个控制器都在同一层,使用像这样的工厂:
(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
,具体取决于控制器的层次结构
我可以通过以下操作做到这一点。
Controller
$scope.$on('modal.shown', function() {
$rootScope.start();
});
Another Controller
$rootScope.start= function () {
some code ...
}
您可以使用离子模型
$ionicModal.fromTemplateUrl('yourmodelhtml.html', {
scope: $scope
}).then(function(modal) {
$scope.confirm = modal;
});
然后调用此 $scope.confirm 以打开点击事件。
我的 Ionic 应用程序中有一个模态,当显示模态时,我想在特定元素上触发点击事件。
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 触发 function start in another controller.
如有任何建议或建议,我们将不胜感激。
谢谢。
你应该试试这个:
<label class="item">
<div class="button button-block button-positive" ng-click="start()">info</div>
</label>
在你的控制器中:
$scope.start = function()
{
}
如果两个控制器都在同一层,使用像这样的工厂:
(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
,具体取决于控制器的层次结构
我可以通过以下操作做到这一点。
Controller
$scope.$on('modal.shown', function() {
$rootScope.start();
});
Another Controller
$rootScope.start= function () {
some code ...
}
您可以使用离子模型
$ionicModal.fromTemplateUrl('yourmodelhtml.html', {
scope: $scope
}).then(function(modal) {
$scope.confirm = modal;
});
然后调用此 $scope.confirm 以打开点击事件。