2015-06-22 14 views
9

Tôi muốn nhận và sửa đổi con đầu tiên của phần tử đã cho trong chỉ thị Góc.Nhận con đầu tiên trong chỉ thị AngularJS

<div class="wanted"> 
</div> 
<div class="not-wanted"> 
</div> 
<div class="not-wanted"> 
</div> 

Tôi đã cố gắng

elm.children('.wanted') 

nhưng sau đó chỉ thị của tôi sẽ thay đổi tất cả trẻ em. Tôi làm cách nào để thực hiện điều này một cách chính xác?

+0

Bạn có đưa ra một thử với css: selector đứa con đầu lòng –

+0

cập nhật các câu hỏi với nhiều mã –

+3

JqLite không chấp nhận một selector cho trẻ em() - đó là lý do tại sao bạn nhận được tất cả các yếu tố con trực tiếp. Xem tại đây: https://docs.angularjs.org/api/ng/function/angular.element – Donal

Trả lời

7

Bạn có thể sử dụng:

elm.children().first(); 

hay:

elm.children(':first') 

Cả hai sẽ có tác dụng tương tự. Cách thứ hai có hiệu suất cao hơn một chút.

+0

Tôi đã nhận TypeError: elm.children (...) đầu tiên không phải là chức năng cho cái đầu tiên – roschulze

+1

Bạn có thể cập nhật câu hỏi với nguồn chỉ thị của bạn và cách bạn sử dụng nó trong html của bạn? –

+0

thứ hai hoạt động tốt – roschulze

4

Góc bao gồm jqLite. JqLite không chấp nhận một bộ chọn cho children() - vì vậy đó là lý do tại sao bạn nhận được tất cả các phần tử con trực tiếp.

Bạn có thể sử dụng .find. Ví dụ:

elm.find('.wanted'); 
+0

Góc jqLite không chấp nhận bộ chọn lớp để tìm một trong hai. "Giới hạn tra cứu theo tên thẻ". –

1

Bằng cách góc với sự giúp đỡ của Chỉ thị

<div ng-repeat="name in names"> 
<div check-render>{{name}}</div> 
</div> 

khiển

angular.module('myApp').directive('checkRender', function ($timeout) { 
    return { 
     restrict: 'A', 

     link: function (scope, el, attrs) { 
if(scope.$first) 
alert('first called'); 
} 
} 
}); 
+1

Điều này không có ý nghĩa. Thuộc tính của bạn là 'custom-render', nhưng chỉ thị của bạn bị ràng buộc với' checkRender'. Ngoài ra, phải viết toàn bộ bộ điều khiển/chỉ thị để xác định xem đứa trẻ đầu tiên có tồn tại không? Có vẻ như đó không phải là cách tốt nhất. –

4

tôi sử dụng: element.children().eq(0)

children() - Lấy trẻ em của mỗi phần tử trong tập hợp các phần tử phù hợp

eq() - Giảm các thiết lập của các yếu tố phù hợp với một trong những lúc chỉ số quy định

Các vấn đề liên quan