2013-06-05 31 views
28

Tôi đang di chuyển một trang html cũ từ jQuery sang Góc, và nó chứa một số biểu mẫu cũ với <input type="submit">. Khi tôi làm giàu các trang của mình với chỉ thị ng-app, các biểu mẫu cũ ngừng hoạt động (ý tôi là khi bạn nhấn các nút submit thì không có gì xảy ra).Angular.js gửi mẫu cũ theo cách cũ

Tôi đã tìm kiếm sự cố này và đã quét tài liệu Góc, nhưng dường như không có ai gửi biểu mẫu nữa.

Bất kỳ đề xuất nào về cách mang những biểu mẫu đó trở lại cuộc sống mà không có nhiều lần nhấn phím sẽ được đánh giá cao.

Hiện nay hình thức đã đánh dấu sau:

<form name="form_upload" method="post" action="" enctype="multipart/form-data"> 
<input type="file" name="file"> 
<input type="submit" name="send" value="Upload"> 
</form> 

Tất cả các mã jQuery Tôi bị thanh trừng và bắt đầu tươi với góc.

UPD:

Tôi đoán tôi bây giờ tìm thấy nguyên nhân, đó là sản phẩm nào action thuộc tính, có vẻ như hành động có sản phẩm nào không được hoan nghênh bởi standarts, nhưng rất thuận tiện để sử dụng cho phép bạn gửi mẫu cho URL trang hiện tại, Có cách nào góc để làm điều đó?

+0

Bạn sử dụng để gửi biểu mẫu của mình như thế nào? Bạn có sử dụng jQuery cho công việc không? –

+2

Nó sẽ hoạt động, ngoại trừ hành động trống. Xem http://plnkr.co/edit/clDeu8NVLCXLh2vojjxp?p = preview –

+0

Vâng, đó là hành động trống rỗng, cảm ơn gợi ý – Dfr

Trả lời

18

Đi tắt của tài liệu: http://docs.angularjs.org/api/ng.directive:form

triết góc là để giảm thiểu dữ liệu và trang web load lại, vì vậy họ không thích "hình thức học cũ", nhưng bạn có thể khắc phục nó bằng cách sử dụng một thuộc tính action trong hình thức.

Góc được thiết kế với các ứng dụng đơn trong tâm trí và tránh tải lại trang đầy đủ vì điều đó sẽ mất nhiều thời gian hơn để thực hiện. Bằng cách sử dụng chỉ thị ngSubmit, bạn có thể xác định một hàm để gửi dữ liệu biểu mẫu tới máy chủ và nhận phản hồi nhanh hơn nhiều so với tải lại toàn bộ trang. Số byte thay vì Kilobyte.

+7

Câu trả lời cũng sẽ trả lời câu hỏi của anh ấy. Tôi đã cố gắng tìm hiểu cách gửi thuộc tính hành động đến trang bạn đang truy cập, khi url được băm vì đó là url để đặt lại mật khẩu của bạn, chẳng hạn. Điều gì đã kết thúc sau khi rút ra một số sợi tóc là 'action =" # "' – morgs32

+0

nhưng đôi khi bạn phải gửi nó theo cách truyền thống, ví dụ: chuyển hướng facebook. bạn phải tải lại trang. Làm thế nào bạn có thể làm điều đó? – OMGPOP

+0

Một ví dụ khác là tích hợp với Symfony và Angular Material. Bạn thích cách symfony để xử lý mọi thứ, và một giao diện gọn gàng –

0

Tôi đã thực hiện việc này. Tôi khá chắc chắn tôi đã sử dụng jquery để gửi mẫu, nhưng bạn có thể có thể làm điều đó với javascript cũ đồng bằng.

Một trong những ý kiến ​​trên trang dạng góc cạnh gợi ý này:

<input onclick="javascript:$(this).parent().submit();" type="submit" value=""> 

http://docs.angularjs.org/api/ng.directive:form

+1

trong javascript đơn giản: this.form.submit(); – Dharmang

+1

Kể từ khi nào $ (này) trở thành javascript cũ đồng bằng ?? – Red2678

+1

@ Red2678 Ouch. :-) Trong phòng thủ của tôi, góc cạnh được đóng gói với một cái gì đó họ gọi jQuery lite, vì vậy nếu bạn đang sử dụng góc cạnh, $ (this) là javascript hợp lệ. –

11
  • Sử dụng một tổ chức phi rỗng action thuộc tính để làm góc gửi biểu mẫu
  • Fill action thuộc tính với vị trí hiện tại (sử dụng góc cạnh)

Trong điều khiển của bạn:

$scope.location = $window.location.href 

Trong HTML của bạn:

<form action="{{location}}"> 

Xem plunkr demo.

+3

Đây là câu trả lời hay hơn cho câu hỏi gốc. – allenylzhou

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