আমি ng-click
রানটাইমের সময় কোনও উপাদানটির ট্রিগার করতে চাই:
_ele.click();
অথবা
_ele.trigger('click', function());
কিভাবে এই কাজ করা যেতে পারে?
আমি ng-click
রানটাইমের সময় কোনও উপাদানটির ট্রিগার করতে চাই:
_ele.click();
অথবা
_ele.trigger('click', function());
কিভাবে এই কাজ করা যেতে পারে?
উত্তর:
বাক্য গঠনটি নিম্নলিখিত:
function clickOnUpload() {
$timeout(function() {
angular.element('#myselector').triggerHandler('click');
});
};
// Using Angular Extend
angular.extend($scope, {
clickOnUpload: clickOnUpload
});
// OR Using scope directly
$scope.clickOnUpload = clickOnUpload;
কৌণিক আরো তথ্য পথ প্রসারিত এখানে ।
আপনি যদি কৌণিকের পুরানো সংস্করণ ব্যবহার করছেন তবে আপনার ট্রিগারহ্যান্ডলারের পরিবর্তে ট্রিগার ব্যবহার করা উচিত ।
আপনার যদি স্টপ প্রচার প্রচারের প্রয়োজন হয় তবে আপনি এই পদ্ধতিটি নীচে ব্যবহার করতে পারেন:
<a id="myselector" ng-click="clickOnUpload(); $event.stopPropagation();">
Something
</a>
triggerHandler
trigger
angular.element(domElement).triggerHandler('click');
সম্পাদনা: এটি উপস্থিত $ প্রয়োগ () চক্রটি বিচ্ছেদ করতে হবে বলে মনে হয়। এটি করার একটি উপায় হ'ল $ সময়সীমা () ব্যবহার করে:
$timeout(function() {
angular.element(domElement).triggerHandler('click');
}, 0);
শিখর দেখুন: http://jsfiddle.net/t34z7/
$timeout
পরিবর্তে অ্যাংুলার ব্যবহার করতে চান setTimeout
, যেমন প্রয়োজনে আপনার জন্য $timeout
একটি $apply
চক্র চালানো হবে । এটি আপনার কোডকে আরও পরীক্ষামূলক করে তোলে কারণ এনজিএমক আপনাকে $timeout
কার্যকর করার সময় সম্পূর্ণ নিয়ন্ত্রণ দেয় । docs.angularjs.org/api/ng/service/$timeout
$timeout(fn, 0, false);
এটি এমন হওয়া উচিত যাতে এটি আবেদন না করে $ প্রয়োগ করা উচিত নয়?
$timeout
হ'ল একটি পরিষেবা এবং এটির ব্যবহারের আগে যেমন নির্ভরতা-ইনজেকশন হওয়া দরকার ডক্স.আঙ্গুলারজস.অর্গ
নিম্নলিখিত সমাধানটি আমার পক্ষে কাজ করে:
angular.element(document.querySelector('#myselector')).click();
পরিবর্তে :
angular.element('#myselector').triggerHandler('click');
$('#element').click()
সকলেই যদি এটি দেখতে পান তবে আমি একটি গুরুত্বপূর্ণ লাইনের সাথে অতিরিক্ত সদৃশ উত্তর যুক্ত করেছি যা ইভেন্টের প্রচারকে বিরত করবে না
$scope.clickOnUpload = function ($event) {
$event.stopPropagation(); // <-- this is important
$timeout(function() {
angular.element(domElement).trigger('click');
}, 0);
};
সবচেয়ে ভাল সমাধানটি ব্যবহার করা:
domElement.click()
কারণ অ্যাঙ্গুলারস ট্রিগারহ্যান্ডলার ( angular.element(domElement).triggerHandler('click')
) ক্লিক ইভেন্টগুলি ডোম হাইয়ারার্কিতে বুদবুদ হয় না, তবে উপরের একটিটি করে - ঠিক একটি সাধারণ মাউস ক্লিকের মতো।
https://docs.angularjs.org/api/ng/function/angular.element
http://api.jquery.com/triggerhandler/
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
সাধারণ নমুনা:
এইচটিএমএল
<div id='player'>
<div id="my-button" ng-click="someFuntion()">Someone</div>
</div>
জাভাস্ক্রিপ্ট
$timeout(function() {
angular.element('#my-button').triggerHandler('click');
}, 0);
এটি যা করে তা হ'ল বোতামটির সন্ধান id
এবং একটি ক্লিক ক্রিয়া সম্পাদন। Voila।
সূত্র: https://techiedan.com/angularjs-how-to-trigger-click/
এই কোডটি কাজ করবে না (ক্লিক করার সময় একটি ত্রুটি নিক্ষেপ করুন):
$timeout(function() {
angular.element('#btn2').triggerHandler('click');
});
নিম্নলিখিত হিসাবে আপনার ক্যোয়ারী নির্বাচনকারী প্রয়োজন :
$timeout(function() {
angular.element(document.querySelector('#btn2')).triggerHandler('click');
});
আপনার পদ্ধতিতে নিম্নলিখিত লাইনটি অন্তর্ভুক্ত করুন আপনি ক্লিক ইভেন্টটি ট্রিগার করতে চান
angular.element('#btn_you_want_to_click_progmaticallt').triggerHandler('click');
});