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


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.