এনজি-ক্লিক থেকে আসল উপাদান পান


204

আমার সাথে আইটেমগুলির সাথে ng-clickসংযুক্তযুক্ত একটি তালিকা রয়েছে :

<ul id="team-filters">
    <li ng-click="foo($event, team)" ng-repeat="team in teams">
         <img src="{{team.logoSmall}}" alt="{{team.name}}" title="{{team.name}}">
    </li>
</ul>

আমি fooআমার নির্দেশে ফাংশনটিতে ক্লিক ইভেন্টগুলি পরিচালনা করছি, ক্লিক করা $eventবস্তুর একটি রেফারেন্স হিসাবে পাস করছি, তবে আমি imgট্যাগটির পরিবর্তে ট্যাগটির রেফারেন্স পাচ্ছি li। এরপরে আমাকে পেতে এই জাতীয় জিনিসগুলি করতে হবে li:

$scope.foo = function($event, team) {
   var el = (function(){
       if ($event.target.nodeName === 'IMG') {
          return angular.element($event.target).parent(); // get li
       } else {
          return angular.element($event.target);          // is li
       }
   })();

ng-clickআমার নির্দেশে ডোম অপারেশন না করে যে উপাদানটির সাথে আবদ্ধ তা রেফারেন্স পাওয়ার কী সহজ উপায় আছে ?

উত্তর:


317

$event.currentTargetপরিবর্তে আপনার প্রয়োজন $event.target।


3
ধন্যবাদ, এটি কাজ করছে। এটি অদ্ভুত যে $ ইভেন্ট অবজেক্টের বর্তমান টার্গেট সম্পত্তিটি বাতিল হয়ে গেছে।
— ওজ্রিক্স

2
এটি অবশ্যই অদ্ভুত ... আপনি যদি $ ইভেন্ট অবজেক্টটিতে লগ করেন তবে $ ইভেন্ট। যাইহোক, আপনি যদি .c ইভেন্ট.কমেন্টার টার্গেট রেফারেন্স লগ করেন তবে এটি সঠিক উপাদানটি দেখায়।
— রিচার্ডে

6
আমি সাধারণত ব্যবহার করব var elem = $event.currentTarget || $event.srcElement। এটি সর্বদা আরও ক্রস ব্রাউজ বন্ধুত্বপূর্ণ হয়েছে, তবুও এটির আর প্রয়োজনীয়তা আছে কিনা তা আমি জানি না।
— ওয়েবওয়ান্ডার

12
কনসোল.লগ বাস্তবায়নের শেষ অবস্থায় গভীর পরিবর্তনীয় অবজেক্ট দেখায়, যখন কনসোল.লগ ডাকা হত তখন সেই রাজ্যে নয়। দেখতে stackoverflow.com/questions/22059811/...
— Tivie

13

এই প্রশ্নের সরাসরি উত্তর নয় বরং $event.currentTargetআপাতদৃষ্টিতে "ইস্যু" র বাতিল হয়ে যাবে।

এটি কনসোল.লগ বাস্তবায়নের শেষ অবস্থায় গভীর পরিবর্তনীয় অবজেক্টগুলি দেখায়, কনসোল.লগকে যখন ডেকেছিল তখন সেই রাজ্যে নয় due

আপনি আরও তথ্যের জন্য এটি পরীক্ষা করতে পারেন: কনসোল.লগের ধারাবাহিক কলগুলি অসঙ্গতিপূর্ণ ফলাফল উত্পন্ন করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.