एक एनजी-क्लिक में कई कार्य कैसे जोड़े जाएं?


293

मैं इस पर अमल करना चाहता हूं, लेकिन मुझे अब तक इससे संबंधित कुछ भी नहीं मिला है :( मैं दोनों कार्यों को हाँ कर सकता हूं लेकिन मैं सोच रहा हूं कि क्या यह संभव है? मैं इसे सचमुच करना चाहता हूं:

<td><button class="btn" ng-click="edit($index) open()">Open me!</button></td>

फिलहाल मेरा JS कोड:

$scope.open = function () {
  $scope.shouldBeOpen = true;
};      

$scope.edit = function(index){

  var content_1, content_2;
      content_1 = $scope.people[index].name;
      content_2 = $scope.people[index].age;

  console.log(content_1);
};

मैं सिर्फ एक क्लिक के साथ दो कार्यों को कॉल करना चाहूंगा, मैं इसे angularJS में कैसे कर सकता हूं? मैंने सोचा कि यह सीएसएस में सीधे आगे होगा जब आप कई कक्षाएं जोड़ते हैं ... लेकिन यह नहीं है :(

जवाबों:


652

आपके पास 2 विकल्प हैं:

  1. एक तीसरा तरीका बनाएं जो दोनों तरीकों को लपेटे। यहां लाभ यह है कि आप अपने टेम्पलेट में कम तर्क देते हैं।

  2. अन्यथा यदि आप एनजी क्लिक में 2 कॉल जोड़ना चाहते हैं तो आप ';' जोड़ सकते हैं edit($index)इस तरह के बाद

    ng-click="edit($index); open()"

यहां देखें: http://jsfiddle.net/laguiz/ehTy6/


1
मैंने विधि दो का उपयोग किया है (जो कि आवश्यक है), लेकिन क्या कारण हैं कि एक में दो कॉल नहीं हैं ng-click?
डेव एवरिट

1
इसलिए मैंने 2 विकल्प दिए। व्यक्तिगत रूप से मैं अपने नियंत्रक में कॉल लपेटना पसंद करता हूं लेकिन यह आपके ऊपर है।
मैक्सेंस

4
विकल्प 2 के साथ कोई समस्या नहीं है, लेकिन विकल्प 1 क्लीनर है क्योंकि आपको अपने विचारों में कोड और तर्क जोड़ने से बचना चाहिए। यदि आपको भविष्य में कुछ संशोधित करने की आवश्यकता है तो बेहतर है।
दानी बारका कासाफोंट

5
मेरे स्वयं के मामले में, विकल्प 2 का अर्थ है कि एक निर्देश के अंदर एक सामान्य फ़ंक्शन को जोड़ने से बचें, जो संभवतः धीमा है और निश्चित रूप से बनाए रखने के लिए कठिन है।
एलेक्स

2
विकल्प 1 भी आपको परीक्षण करने के लिए एक और अनावश्यक फ़ंक्शन देता है
पैरिस वार्नी

18

आप ';' के साथ कई कार्य कह सकते हैं

ng-click="edit($index); open()"

8

बहुत सारे लोग (क्लिक) विकल्प का उपयोग करते हैं इसलिए मैं इसे भी साझा करूंगा।

<button (click)="function1()" (click)="function2()">Button</button>

4
उपयोग करना (क्लिक करना) = "फ़ंक्शन (); फ़ंक्शन 2 ()" भी काम करता है। मुझे बस यही पता चला और साझा करना चाहता था।
amlane86

मुझे यह उपयोगी लगा जब मुझे बांधना पड़ा keyup.enter;जुदाई क्योंकि तरीकों हमेशा क्रम में क्रियान्वित नहीं कर रहे थे काम नहीं किया।
xandermonkey

2

इसे इस्तेमाल करे:

  • कार्यों का एक संग्रह बनाओ
  • एक ऐसा फंक्शन बनाएं जो कलेक्शन के सभी फंक्शन्स को पूरा करता है और उन पर अमल करता है।
  • फ़ंक्शन को html में जोड़ें
array = [
    function() {},
    function() {},
    function() {}
]

function loop() {
    array.forEach(item) {
        item()
    }
}

ng - click = "loop()"


-15
ng-click "$watch(edit($index), open())"

1
यहां सिंटेक्स गलत है। जैसा कि ऊपर बताया गया है, अर्धविराम सीमांकक है; अल्पविराम नहीं ... अन्य बातों के अलावा ...
एरिक ग्रोसकुर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.