এনজি-ক্লিক ব্যবহার করে কৌনিক জেগুলিতে ক্লাস যুক্ত এবং অপসারণ করা


97

আমি এনজি-ক্লিক দিয়ে কীভাবে একটি ক্লাস যুক্ত করব তা চেষ্টা করার চেষ্টা করছি। আমি আমার কোডটি প্লাঙ্কারে আপলোড করেছি এখানে ক্লিক করুন । কৌনিক ডকুমেন্টেশনের দিকে তাকিয়ে আমি ঠিক কীভাবে এটি করা উচিত তা বুঝতে পারি না। নীচে আমার কোড একটি স্নিপেট আছে। কেউ আমাকে সঠিক দিকে পরিচালিত করতে পারে?

 <div ng-show="isVisible" ng-class="{'selected': $index==selectedIndex}" class="block"></div>

নিয়ামক

var app = angular.module("MyApp", []);
app.controller("subNavController", function ($scope){

        $scope.toggle = function (){
            $scope.isVisible = ! $scope.isVisible;
        };

        $scope.isVisible = false;
    });

উদ্দেশ্য কী তা ডেমো বা এক্সপ্লোশন থেকে পরিষ্কার নয়। মনে হচ্ছে একটি মেনু টগল করার চেষ্টা করা হচ্ছে, তবে কেন আপনি কেবল ডেমোতে টগলিং মেনু লিঙ্কটি উপার্জন করছেন?
Charlietfl

উত্তর:


110

আপনাকে কেবল নির্দেশকে "এনজি-ক্লাস" এর সাথে একটি ভেরিয়েবল বাঁধতে হবে এবং এটি নিয়ামক থেকে পরিবর্তন করতে হবে। এটি কীভাবে করা যায় তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

var app = angular.module("ap",[]);

app.controller("con",function($scope){
  $scope.class = "red";
  $scope.changeClass = function(){
    if ($scope.class === "red")
      $scope.class = "blue";
    else
      $scope.class = "red";
  };
});
.red{
  color:red;
}

.blue{
  color:blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="ap" ng-controller="con">
  <div ng-class="class">{{class}}</div>
  <button ng-click="changeClass()">Change Class</button>    
</body>

এখানে jsFood উপর কাজ উদাহরণ


29
classএটি একটি সংরক্ষিত শব্দ, classNameপরিবর্তে ব্যবহার করুন, YUI সংকলক এটি হ্রাস করতে ব্যর্থ হবে।
অরল্যান্ডো

7
যদি আমি একই ভিউতে একাধিক ডিভিডের জন্য এই কোডটি ব্যবহার করতে চাই তবে কী হবে? এই কোডটি সত্যই সমস্ত ডিভের জন্য ক্লাস পরিবর্তন করে, আমি কীভাবে কেবল নির্বাচিত ক্লিক করা আইটেমটিতে ক্লাস প্রয়োগ করতে পারি
xzegga

ধন্যবাদ পরিবর্তন শ্রেণীর বোতামটি ক্লিক করা হলে কী ঘটছে তা সম্পূর্ণরূপে বুঝতে কনসোলটি খুলুন এবং কোডটি দেখুন।
ফিদেভ

4
এই এসও থ্রেডটি একবার দেখুন। : 100% প্রশ্ন সুযোগ সাথে সংযুক্ত নাও হতে পারে কিন্তু এখনও অতিরিক্ত দরকারী তথ্য প্রদান করে stackoverflow.com/questions/31047094/...
বিলাল

144

আমি আমার কোডটিতে গতিশীলভাবে " " ক্লাস যুক্ত করতে বা অপসারণ করতে চাই , এখানে আমি কী করেছি।activeng-click

<ul ng-init="selectedTab = 'users'">
   <li ng-class="{'active':selectedTab === 'users'}" ng-click="selectedTab = 'users'"><a href="#users" >Users</a></li>
   <li ng-class="{'active':selectedTab === 'items'}" ng-click="selectedTab = 'items'"><a href="#items" >Items</a></li>
</ul>

13
এনজি-থিমের জন্য -1। অ্যাঙ্গুলারজেএস ডক্স অনুসারে -The only appropriate use of ngInit is for aliasing special properties of ngRepeat, as seen in the demo below. Besides this case, you should use controllers rather than ngInit to initialize values on a scope.
মাইক গ্রাবোভস্কি

4
আমি কেবল "এখানে" নিয়ন্ত্রক অংশটি এড়িয়ে চলেছি, কারণ এটি কেবল এটি কীভাবে করা যায় তার প্রাথমিক কার্যকারিতাটি দেখানোর জন্য ...
cutesevil086

4
আপনি und ng-class = "active 'সক্রিয়' এর অনিবন্ধিত সিনট্যাক্সও ব্যবহার করতে পারেন: সত্য} [নির্বাচিত ট্যাব === 'ব্যবহারকারীদের]]" `
কোডি

আমি বুঝতে পারছি না কেন এটি কাজ করবে। আমি কৌনিক 1.3.8 তে খুব অনুরূপ কিছু করছি এবং শর্তসাপেক্ষ শ্রেণি যখন অন্য ক্লিক করা হয় তখন কোনও উপাদান থেকে সরানো হয় না। আমি ধরে নেব কারণ অন্যান্য উপাদানগুলি পুনরায় রেন্ডার হয়নি। তাহলে কেন, এটি কখনও কাজ করে? যখন কোনও একক উপাদান ক্লিক করা হয়েছিল তখন কৌনিকগুলির পুরানো সংস্করণগুলি কি পুরো তালিকাটি পুনরায় তৈরি করেছিল?
ম্যাট মোলনার 22

আমি কেবল এটি যুক্ত করছি কারণ এটি অন্য কাউকে লাইনে নামাতে সহায়তা করতে পারে। কৌণিক-ইউআই-রাউটারের কার্যকারিতা রয়েছে যা আপনি নির্দিষ্ট করছেন এবং আরও অনেক কিছু। আপনি এমন রাজ্য তৈরি করেন যা ইউরি দ্বারা প্রতিনিধিত্ব করা হয়। প্রতিটি রাজ্যে 1 বা ততোধিক নিয়ামক, 1 বা ততোধিক টেম্পলেট এবং তাদের সাথে আবদ্ধ 1 বা আরও বেশি ভিউ থাকতে পারে। লিঙ্কগুলি ui-sref নির্দেশিকা ব্যবহার করে তৈরি করা হয়। রাজ্য সক্রিয় থাকাকালীন ইউআই-সেরেফ-সক্রিয় নির্দেশিকা একটি নির্দিষ্ট শ্রেণিকে সেই উপাদানটির সাথে আবদ্ধ করবে। কৌণিক UI- রাউটার ডকুমেন্টেশন
ডেডব্যাবাইকিটেন

12

কেবল নির্দেশের সাহায্যে এটি করার একটি সহজ এবং পরিষ্কার উপায় রয়েছে way

<div ng-class="{'class-name': clicked}" ng-click="clicked = !clicked"></div>

8

আপনি যদি পূর্ববর্তী ক্লাসটি সরিয়ে নতুন ক্লাস যুক্ত করতে চান তবে আপনি এটি একটি নির্দেশেও করতে পারেন

    .directive('toggleClass', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            element.bind('click', function() {
                if(element.attr("class") == "glyphicon glyphicon-pencil") {
                    element.removeClass("glyphicon glyphicon-pencil");
                    element.addClass(attrs.toggleClass);
                } else {
                    element.removeClass("glyphicon glyphicon-ok");
                    element.addClass("glyphicon glyphicon-pencil");
                }
            });
        }
    };
});

এবং আপনার টেমপ্লেটে:

<i class="glyphicon glyphicon-pencil" toggle-class="glyphicon glyphicon-ok"></i>

আপনি ট্যাগে আইকনগুলির নাম এবং নির্দেশিকা কেন?
রবার্ট জনস্টোন

এটি একটি বোবা মন্তব্য। এটি করার একটি নিখুঁত বৈধ বিষয় যদিও আমি সম্মত হই যে যখন আপনি কৌণিক কিছু করতে হবে তা ব্যাখ্যা করার সময় এটি সম্ভবত এটির জন্য জায়গা নয়
বার্ট

আপনি কেবল কেন করবেন না: কৌণিক.ইলেট ('গ্লাইফিকন গ্লাইফিকন-পেন্সিল)। রেমোভক্লাস (' গ্লাইফিকন গ্লাইফিকন-পেন্সিল ')? কৌণিক.এলিমেন্টটি বেশ কৌণিকের jqLite j এর jqLite সংস্করণ। আপনি কেবল একটি পরিষেবা বা নির্দেশ তৈরি করতে পারেন যা এই ফাংশনটিকে কল করে এবং নির্মাত্রে মুছে ফেলা ক্লাস এবং অ্যাড ক্লাসগুলিতে পাস করে
ম্যাটই

এটি সত্য, তবে আমি সরল কৌণিক জেএস ব্যবহার করার চেষ্টা করছিলাম।
শিলান

7

আপনার ঠিক এটি আছে, আপনাকে যা করতে হবে তা হ'ল আপনার এনজি-ক্লিকে নির্বাচিত ইনডেক্স সেট করা আছে।

ng-click="selectedIndex = 1"

এখানে আমি কীভাবে এনজি-ভিউ পরিবর্তন করে এমন একটি বোতামের সেটটি প্রয়োগ করেছি এবং বর্তমানে নির্বাচিত দৃশ্যের বোতামটি হাইলাইট করেছি।

<div id="sidebar" ng-init="partial = 'main'">
    <div class="routeBtn" ng-class="{selected:partial=='main'}" ng-click="router('main')"><span>Main</span></div>
    <div class="routeBtn" ng-class="{selected:partial=='view1'}" ng-click="router('view1')"><span>Resume</span></div>
    <div class="routeBtn" ng-class="{selected:partial=='view2'}" ng-click="router('view2')"><span>Code</span></div>
    <div class="routeBtn" ng-class="{selected:partial=='view3'}" ng-click="router('view3')"><span>Game</span></div>
  </div>

এবং এটি আমার নিয়ামক মধ্যে।

$scope.router = function(endpoint) {
    $location.path("/" + ($scope.partial = endpoint));
};


2

আমি এটি পেতে উপরে জ্যাক আরগিলের পরামর্শ ব্যবহার করেছি, যা আমি খুব মার্জিত বলে মনে করি:

সিএসএস:

.active {
    background-position: 0 -46px !important;
}

এইচটিএমএল:

<button ng-click="satisfaction = 'VeryHappy'" ng-class="{active:satisfaction == 'VeryHappy'}">
    <img src="images/VeryHappy.png" style="height:24px;" />
</button>
<button ng-click="satisfaction = 'Happy'" ng-class="{active:satisfaction == 'Happy'}">
    <img src="images/Happy.png" style="height:24px;" />
</button>
<button ng-click="satisfaction = 'Indifferent'" ng-class="{active:satisfaction == 'Indifferent'}">
    <img src="images/Indifferent.png" style="height:24px;" />
</button>
<button ng-click="satisfaction = 'Unhappy'" ng-class="{active:satisfaction == 'Unhappy'}">
    <img src="images/Unhappy.png" style="height:24px;" />
</button>
<button ng-click="satisfaction = 'VeryUnhappy'" ng-class="{active:satisfaction == 'VeryUnhappy'}">
    <img src="images/VeryUnhappy.png" style="height:24px;" />
</button>

2

আপনি যদি ক্লাসগুলি যুক্ত করার এবং অপসারণের জন্য যুক্তিযুক্ত উদ্বেগকে আলাদা করতে পছন্দ করেন তবে এটি আপনি করতে পারেন

নিয়ামক

 (function() {
    angular.module('MyApp', []).controller('MyController', MyController);

    function MyController() {
      var vm = this;
      vm.tab = 0;

      vm.setTab = function(val) {
          vm.tab = val;
       };
      vm.toggleClass = function(val) {
          return val === vm.tab;
           };
        }
    })();

এইচটিএমএল

<div ng-app="MyApp">
  <ul class="" ng-controller="MyController as myCtrl">
    <li ng-click="myCtrl.setTab(0)" ng-class="{'highlighted':myCtrl.toggleClass(0)}">One</li>
    <li ng-click="myCtrl.setTab(1)" ng-class="{'highlighted':myCtrl.toggleClass(1)}">Two</li>
    <li ng-click="myCtrl.setTab(2)" ng-class="{'highlighted':myCtrl.toggleClass(2)}">Three</li>
   <li ng-click="myCtrl.setTab(3)" ng-class="{'highlighted':myCtrl.toggleClass(3)}">Four</li>
 </ul>

সিএসএস

.highlighted {
   background-color: green;
   color: white;
}

-1

প্রত্যেকে কীভাবে জটিল করে তুলছে তা আমি বিশ্বাস করতে পারি না। এটি আসলে খুব সহজ। কেবল এটি আপনার এইচটিএমএল এ পেস্ট করুন (কোনও নির্দেশনা নেই /

<div class="form-group col-md-12">
    <div ng-class="{'bg-info':     (!transport_type)}"    ng-click="transport_type=false">CARS</div>
    <div ng-class="{'bg-info': transport_type=='TRAINS'}" ng-click="transport_type='TRAINS'">TRAINS</div>
    <div ng-class="{'bg-info': transport_type=='PLANES'}" ng-click="transport_type='PLANES'">PLANES</div>
</div>

-1

প্রতিক্রিয়াশীল ফর্মগুলির জন্য -

এইচটিএমএল ফাইল

<div class="col-sm-2">
  <button type="button"  [class]= "btn_class"  id="b1" (click)="changeMe()">{{ btn_label }}</button>
</div>

টিএস ফাইল

changeMe() {
  switch (this.btn_label) {
    case 'Yes ': this.btn_label = 'Custom' ;
    this.btn_class = 'btn btn-danger btn-lg btn-block';
    break;
    case 'Custom': this.btn_label = ' No ' ;
    this.btn_class = 'btn btn-success btn-lg btn-block';
    break;
    case ' No ': this.btn_label = 'Yes ';
      this.btn_class = 'btn btn-primary btn-lg btn-block';
      break;
  }

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