2013-08-03 7 views
45

में एनजी-क्लिक फ़ंक्शन में तत्व की विशेषता प्राप्त करना मेरे पास एक स्पैन टैग है जो क्लिक करते समय नियंत्रक में फ़ंक्शन को कॉल करता है।एंजुलरज

एचटीएमएल

<div class="row" ng-repeat="event in events"> 
    <div class="col-lg-1 text-center"> 
     <span class="glyphicon glyphicon-trash" data={{event.id}} ng-click="deleteEvent()"> 
     </span> 
    </div> 
</div> 

नियंत्रक

$scope.deleteEvent=function(){ 
    console.log(this); 
} 

मैं नियंत्रक समारोह में डेटा विशेषता में मान प्राप्त करने की आवश्यकता। मैंने इस कीवर्ड और $ घटना का उपयोग करने की कोशिश की; न तो कोई काम किया।

कृपया मदद करें।

उत्तर

78

एनजी क्लिक समारोह को सीधे इसे पारित प्रयास करें:

<div class="col-lg-1 text-center"> 
    <span class="glyphicon glyphicon-trash" data="{{event.id}}" 
      ng-click="deleteEvent(event.id)"></span> 
</div> 

तो यह आपके हैंडलर में उपलब्ध होना चाहिए:

$scope.deleteEvent=function(idPassedFromNgClick){ 
    console.log(idPassedFromNgClick); 
} 

यहाँ an example

+0

असल में यह पूरा div ng-repeat के अंदर आता है। इसलिए मैं ng-click के अंदर event.id का उपयोग नहीं कर सकता। मुझे लगता है। – Saravanan

+0

जेएसफ़िल्ड लिंक देखें, मैंने 'ngRepeat' – jandersen

+0

के भीतर 'ngClick'' के पैरामीटर का उपयोग करने के उदाहरण के लिए अभी मेरे उत्तर में जोड़ा है। मैंने कल यह कोशिश की और 3 घंटे से अधिक समय बिताया। यह काम करता है। मैंने कुछ गलती की हो सकती है। वैसे भी यह काम करता है और पहेली के लिए धन्यवाद। यह मदद करता है। – Saravanan

78

इससे भी अधिक सरल, को भेज देते हैं घटना गुणों तक पहुंचने के लिए $event ऑब्जेक्ट ng-click पर ऑब्जेक्ट करें। एक उदाहरण के रूप:

<a ng-click="clickEvent($event)" class="exampleClass" id="exampleID" data="exampleData" href="">Click Me</a> 

अपने clickEvent() = function(obj) {} समारोह के भीतर आप इस तरह data मूल्य पहुँच सकते हैं:

var dataValue = obj.target.attributes.data.value; 

कौन सा exampleData लौट आते हैं।

यहां एक full jsFiddle है।

+0

आपका जेएसफ़ाइल क्रोम में ठीक काम करता है, लेकिन फ़ायरफ़ॉक्स में नहीं? – Michiel

+0

इसे पकड़ने के लिए धन्यवाद। मैंने 'obj.target' का उपयोग करके बेहतर समाधान के साथ jsFiddle को उखाड़ फेंक दिया है। –

+8

मुझे पता चला कि आप 'obj.target.getAttribute (" डेटा ") कर सकते हैं 'और अधिक पठनीय आईएमओ दिखता है, जेएस यहाँ बेवकूफ है: http://jsfiddle.net/zpApT/ –

3

ब्रेट DEWOODY का जवाब देने के लिए अतिरिक्त: (अब अद्यतन किया जाता है जो) IE में

var dataValue = obj.srcElement.attributes.data.nodeValue; 

वर्क्स ठीक (9+) और क्रोम, बल्कि Firefox srcElement संपत्ति नहीं जानता है। मैंने पाया:

आईई, क्रोम और एफएफ में
var dataValue = obj.currentTarget.attributes.data.nodeValue; 

काम करता है, मैं सफारी का परीक्षण नहीं किया।

+1

धन्यवाद Michiel। मैंने इसे हल करने के लिए jsFiddle को अद्यतन किया है। मैं अधिक सार्वभौमिक 'obj का उपयोग कर रहा हूँ।अब गुणों को पकड़ने के लिए लक्ष्य 'संपत्ति। –

+1

हां ब्रेट, मैं मानता हूं कि लक्ष्य का उपयोग करना बेहतर है, मेरा कोड अपडेट करना, धन्यवाद! – Michiel

संबंधित मुद्दे