এক এনজি-ক্লিকে কীভাবে অনেকগুলি কার্য যুক্ত করতে হয়?


293

আমি কীভাবে এটি কার্যকর করতে হবে তা সন্ধান করছি তবে এতদূর সম্পর্কিত কোনও কিছুই আমি খুঁজে পাচ্ছি না :( আমি দুটি ফাংশনই হাঁ করে ফেলতে পারি তবে এটি সম্ভব কিনা আমি ভাবছি? আমি আক্ষরিকভাবে এটি করতে চাই:

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

এই মুহুর্তে আমার জেএস কোড:

$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);
};

আমি মাত্র একটি ক্লিক দিয়ে দুটি ফাংশন কল করতে চাই, আমি কৌনিক জেএস এ কীভাবে এটি করতে পারি? আমি ভেবেছিলাম যখন আপনি একাধিক ক্লাস যুক্ত করেন তখন এটি সিএসএসের মতো সোজা হয়ে উঠত ... তবে এটি নয় :(

উত্তর:


652

আপনার কাছে দুটি বিকল্প রয়েছে:

  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;বিচ্ছেদ কারণ পদ্ধতি সবসময় অনুক্রমে নির্বাহ করা হয় নি কাজ করে নি।
xendermonkey

2

এটা চেষ্টা কর:

  • ফাংশনগুলির একটি সংগ্রহ করুন
  • সংগ্রহের সমস্ত ফাংশনগুলি কার্যকর করে এবং কার্যকর করে এমন একটি ফাংশন তৈরি করুন।
  • এইচটিএমএলে ফাংশন যুক্ত করুন
array = [
    function() {},
    function() {},
    function() {}
]

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

ng - click = "loop()"


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

1
এখানে সিনট্যাক্সটি ভুল। উপরে বর্ণিত হিসাবে, সেমিকোলন হ'ল ডিলিমিটার; কমা নয় ... অন্যান্য বিষয়গুলির মধ্যে ...
এরিক গ্রসকুর্থ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.