Helpex - Trao đổi & giúp đỡ Đăng nhập
4

Tôi có một trang, với một số mục (được hiển thị thông qua ng-repeat), mỗi mục trong số này chứa một loạt dữ liệu "chỉ đọc" và một biểu mẫu.

Tôi đang sử dụng lệnh ng-form và đặt tên chúng như trong câu hỏi / câu trả lời này

Tuy nhiên, điểm khác biệt của tôi là tôi không đặt ng-form trên phần tử lặp lại vì nó không "cảm thấy đúng" khi có tất cả các trường / div hiển thị bên trong biểu mẫu đó.

Thay vào đó, html của tôi trông như thế này:

<div ng-controller="MyController">
 <div ng-repeat="inst in Repeats">
  {{inst.name}}
  <div>Loads of "read only" content here, including charts/custom directives</div>
  <ng-form name=frm_{{$index}}>
    <input type="text" ng-model="inst.name" />
  </ng-form>
 </div>
<input type="button" value="View scope in console" ng-click="View()" />

Vấn đề là tôi không thể truy cập vào các biểu mẫu trên phạm vi trong bộ điều khiển. Câu trả lời cho câu hỏi (được liên kết ở trên) cho thấy rằng quy ước đặt tên này hoạt động và tôi sẽ thấy một số đối tượng trên phạm vi $ trong bộ điều khiển để có quyền truy cập.

Tuy nhiên như đã chứng minh trong này liệng cách nhấn vào "View phạm vi trong giao diện điều khiển" nút - chương trình các hình thức chưa được bổ sung vào phạm vi.

Tôi có cần thay đổi cấu trúc của html để có cả ng-repeat và ng-form trên cùng một phần tử để điều này hoạt động không ??

4 hữu ích 5 bình luận 3.0k xem chia sẻ
3

Vì vậy, tôi đã giải quyết vấn đề này.

Những gì tôi đã làm, sau khi nhìn xung quanh có vẻ là một cách làm khá "chuẩn", đó là chuyển biểu mẫu vào hàm View () trong mỗi lần gọi.

html trông như thế này:

<div ng-controller="MyController">
 <div ng-repeat="inst in Repeats">
  {{inst.name}}
  <div>Loads of "read only" content here, including charts/custom directives</div>
  <ng-form name=frmInputs}>
    <input type="text" ng-model="inst.name" />
  </ng-form>
 </div>
<input type="button" value="View scope in console" ng-click="View(frmInputs)" />

Lưu ý rằng biểu mẫu không nhận được "Tên duy nhất" về mặt trang (tôi không sử dụng {{$ index}} để thêm vào tên biểu mẫu nữa) - tuy nhiên vì ng-form lặp lại - nó là duy nhất cho mỗi trường hợp lặp lại đó. Vì vậy, tôi có thể chuyển "frmInputs" đến phương thức View () trên bộ điều khiển của mình - phương thức này sẽ cho phép tôi truy cập vào biểu mẫu hiện đang được thực hiện.

3 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ angularjs forms angularjs-ng-repeat angularjs-ng-form , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading