2013-03-09 40 views
7

Sử dụng AngularJS, cách thích hợp để xóa giá trị của trường văn bản là gì? Tôi có một lĩnh vực đầu vào với một nút bên cạnh nó. Người dùng nhập vào nó và nhấn nút để xóa hoặc đặt lại.AngularJS, văn bản đầu vào rõ ràng với nút

Tôi biết tôi có thể thêm sự kiện ng-click trên chính nút và gọi hàm, nhưng tôi không chắc đó là cách chính xác để thực hiện.

Ngay bây giờ tất cả tôi có là:

<input type="text" ng-model="searchQuery" /> 
<button class="btn" <!--do something here maybe?-->> 
    <i class="icon-search" ng-class="{'icon-refresh': searchQuery.length}"></i> 
</button> 

Trả lời

8

ng-click là "góc" cách để làm điều đó

chỉ cần khai báo một hàm trong phạm vi của bạn và gắn nó vào của nút ng-click

Nếu bạn muốn một cái gì đó tiên tiến hơn, thì "Đường góc" gợi ý tạo một chỉ thị để bọc chức năng bạn muốn và đính kèm nó vào nút của bạn (tùy thuộc vào cách bạn cấy ement chỉ thị của bạn)

Nếu bạn muốn có một ví dụ, hãy cho tôi biết trong các ý kiến ​​

+0

ok, nếu đó là cách thì tôi chắc chắn tôi có thể đoán ra. Tôi không chắc liệu có cách nào tốt hơn để làm điều đó không. Cảm ơn @Dogoku – Ronnie

+1

và chỉ để xác nhận, đây là cách tôi đã thiết lập lại nó '$ scope.resetSearch = function() {$ scope.searchQuery =" ";}' – Ronnie

+0

yep, trông tốt – Dogoku

30

Tôi đã có cùng một vấn đề. Có lẽ đơn giản là tốt nhất?

Không cần gọi phương thức trong bộ điều khiển. Không cần chỉ thị. Chỉ cần một tuyên bố ngắn gọn để xóa mô hình mà bạn đã khai báo trong thẻ đầu vào. Như thế này:

<input ng-model="searchQuery"> 
<button class="btn" ng-click="searchQuery = ''"></button> 

Bạn cũng có thể ẩn các nút rõ ràng khi không có văn bản trong đầu vào, như thế này:

<button class="btn" ng-show="searchQuery.length" ...></button> 

Bằng cách này, có thể là một chỉ thị đó sẽ đặt nút rõ ràng bên trong của hộp đầu vào sẽ là tốt đẹp. Một cái gì đó như bạn thấy trên iPhone.

+4

+1 - Đây là cách 'góc cạnh' hơn chỉ để xóa mô hình dữ liệu khi nhấp chuột. – Zeeshan

+0

Câu trả lời hay. Chỉ cần làm rõ một lỗi đánh máy nhỏ - hãy kiểm tra kỹ nút 'searchQquery'. – Federico

+0

Cảm ơn, tôi đã xóa 'q' – nijlgier

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