2012-06-21 24 views
9

Tôi có một trang AngularJS với một số đầu vào biểu mẫu.AngularJS, làm cách nào để làm cho giao diện người dùng phụ thuộc vào trường nào có tiêu điểm?

Khi một số đầu vào có tiêu điểm, tôi muốn thay đổi các khía cạnh khác, tùy ý, của trang.

Ví dụ: khi người dùng ở đầu vào 'mã cổ phiếu', tôi muốn hiển thị danh sách mã cổ phiếu phổ biến. Khi họ đang ở trong lĩnh vực 'qty' tôi muốn hiển thị số lượng và thời gian giao hàng trong kho.

Có biến nào chứa đầu vào 'hiện tại' (cái có tiêu điểm) hay tôi cần hoàn nguyên về onFocus của jQuery. (Có vẻ như một chút sơ khai bây giờ.)

Trả lời

10

Làm thế nào để đưa ra một chỉ thị? Bạn có thể thiết lập một biến bất cứ khi nào người dùng rời khỏi/đi vào đầu vào, và phát hiện rằng: http://jsfiddle.net/TZnj2/

Hãy chắc chắn để đọc hướng dẫn chỉ thị nếu bạn đang nhầm lẫn như những gì đang xảy ra: http://docs.angularjs.org/guide/directive

Ngoài ra tôi sử dụng phạm vi. $ áp dụng trong chỉ thị rằng, đây là một lời giải thích về những gì có quyền này: http://docs.angularjs.org/api/ng.$rootScope.Scope#$apply

+0

Rất nhiều Angular JS có vẻ thanh lịch, tuy nhiên điều này có vẻ như rất nhiều mã để đạt được điều này - họ đã quên ngFocus và ngBlur chỉ thị? –

+2

Vì vậy, bạn muốn thanh lịch Hãy thử điều này, sau đó :-D: http://jsfiddle.net/andytjoslin/3Aevb/1/. Và Angular không muốn viết chỉ thị cho _everything_, tôi đoán vậy. ng-click và ng-dblclick vv chỉ là chỉ thị, yunno. Không có gì đặc biệt. –

+0

Chỉ cần ý kiến ​​của tôi nhưng tôi vẫn nghĩ jQuery đọc tốt hơn trong trường hợp mờ/tiêu điểm đặc biệt này (tôi đã thiết kế điều này bằng cách sử dụng một đối tượng, có thể lấy đi với ít mã hơn nếu nó được gạch chân) http://jsfiddle.net/gregk/r2336/ –

8

ngFocusngBlur được tích hợp theo chỉ thị:

<input ng-focus="hasFocus = true" ng-blur="hasFocus = false" type="text"> 
<p ng-show="hasFocus">The field has focus!!</p> 

Try demo on jsfiddle

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