2013-05-16 34 views
9

Tôi đang tạo một ứng dụng web hoạt động với API web cài đặt có góc cạnh. Có rất nhiều cài đặt và tất cả đều là tùy chọn. Nếu tôi gửi một thiết lập, nó sẽ được lưu lại. Cài đặt không được gửi sẽ không thay đổi.Dạng góc - chỉ gửi các trường đã thay đổi

Yêu cầu là có một Lưu thay đổi cho tất cả các cài đặt.

Tôi tự hỏi nếu có một số cách trong Angular để thực hiện điều này.

Tôi đã nghĩ về việc không sử dụng HTML form và thu thập dữ liệu và tự tạo yêu cầu ajax nhưng sau đó tôi sẽ mất cơ chế xác thực (hoạt động tốt với xác thực giao diện người dùng).

Tôi nghĩ về việc chia biểu mẫu thành các biểu mẫu nhỏ và chỉ gửi các biểu mẫu ở đó ng-dirty không sai, nhưng điều này có thể gây ra một phần tiết kiệm nếu một số yêu cầu thất bại (và điều này không đúng với yêu cầu).

Bất kỳ ý tưởng nào?

Trả lời

6

Trong tài liệu hướng dẫn có một ví dụ bao gồm ng-copy để thực hiện chức năng đặt lại.

http://docs.angularjs.org/cookbook/advancedform

Trong nộp bạn có thể so sánh mô hình của bạn bắt đầu (bản copy chính) đến thay đổi/đối tượng nộp (thay đổi bản sao) và chỉ nộp những giấy tờ thay đổi (hoặc chỉ cần xóa những đều giống nhau/không thay đổi).

Khác biệt bản sao và bản gốc với http://blog.vjeux.com/2011/javascript/object-difference.html Điều này cần thêm công việc để xử lý mảng. Hoặc chuyển đổi sang JSON và khác với JSON https://github.com/benjamine/JsonDiffPatch

+0

đây không phải là những gì tôi đang tìm kiếm, nhưng tôi đoán điều này có nghĩa là góc không cung cấp chức năng này ra khỏi hộp. cảm ơn bạn. –

+2

Tái tạo lại bánh xe - FormController góc và ngModel đã thực hiện kiểm tra bẩn, thêm các lớp và lưu trữ thông tin này trong phạm vi $. Xem câu trả lời từ r4w87173 –

+0

@ArturBodera Điều gì sẽ xảy ra nếu tôi muốn tự động hóa quá trình này? Có vẻ như tôi cần theo dõi các tên và các thuộc tính mô hình đầu vào. (Tôi thực sự yêu cầu). – keyser

17

Bạn có thể kiểm tra xem biểu mẫu hoặc bất kỳ trường được đặt tên nào được sửa đổi trước khi gửi. Nếu hình thức có một cái tên và các đầu vào của bạn có tên như:

<form name="myForm"> 
    <input name="input1"> 
</form> 

Trong bộ điều khiển, bạn sẽ được tiếp cận với các đối tượng $scope.myForm$scope.myForm.input1, và các đối tượng này sẽ có một tài sản mà là true nếu giá trị ban đầu là $dirty được người dùng sửa đổi.

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