2015-07-08 16 views
5

AngularJS'de oldukça yeniyim. Bu senaryoyu kullanarak nasıl ele alınacağını bilmem gerek.`active` sınıfına 'li' öğesi tıklandığında nasıl eklenir

Değerlere sahip bir dizim var. Diziyi yinelemek için ng-repeat kullanıyorum ve iyi çalışıyor. Benim gereksinimi ul ve her kullanıcı tıklama ilk çocuğa bir sınıf (active) nasıl ekleneceğini olduğunu tıklanan öğenin active sınıf almalısınız ve li elementlerin geri kalanındanactivesınıf kaldırın.

Ben çok kolay gibi JQuery içinde yaptık:

$('li').addClass('active').siblings().removeClass('active') 

Ama nasıl burada aynı elde etmek için?

Kodum:

JavaScript Kontrolörü

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

myApp.controller("main", function ($scope) { 

    $scope.items = [1,2,3,4,5]; 

    $scope.activate = function (item) { 

    //how to active this item? 

    //onload how to add class on first li? 

    } 

}) 

HTML

<ul> 

    <li ng-click="activate(item)" ng-repeat="item in items"> 
     {{item}} 
    </li> 

    </ul> 

Live Demo

+4

olası yinelenen - tıklama etkin bir sınıf ekleyerek Best-Uygulamalara (ng-tekrar) ] (http://stackoverflow.com/questions/20902583/angularjs-best-practices-on-adding-an-active-c lass-on-click-ng-repeat) – aadarshsg

cevap

9

nasıl thi hakkında s. Geçerli aktif öğeyi denetleyicinizde saklayın ve eğer varsa, bir sınıf uygulayın. [Angularjs ait

HTML

<ul> 
    <li 
     ng-click="activate(item)" 
     ng-repeat="item in items" 
     ng-class="{'active': item == active}">{{item}} 
    </li> 
</ul> 

JS Kontrolörü

$scope.items = [1,2,3,4,5]; 
$scope.active = items[0]; // for onload first element active 
$scope.activate = function (item) { 
    $scope.active = item; 
} 

Plunker

+0

http://plnkr.co/edit/VNczEPuiT7vlLiEB7wLz?p=preview –

+0

Ancak yükte ilk öğenin burada etkin sınıf bulunmuyor – 3gwebtrain

+0

Güncelleştirmeleri görün. =) –

İlgili konular