2017-02-17 24 views
5

Tôi có hai thành phần và một thành phần đang ngồi trên một thiết bị khác. Tôi cần phải gửi một sự kiện để tuyến đường chính từ thành phần con (cả hai thành phần sử dụng trong cùng một tuyến đường)Tác vụ gửi thành phần Ember đến tuyến đường

enter image description here

Xin vui lòng cho tôi biết là có cách nào tiêu chuẩn để làm điều đó.

Trả lời

13

Đối với câu trả lời ngắn, bạn có thể sử dụng số ember-route-action-helper bổ trợ.

<button {{action (route-action 'onButtonClick')}}>ClickToCallRouteAction</button> 

Có ba cách để hành động truyền thông,

1. Cũ phong cách chức năng cổ điển theo phong cách tức., Đi qua tên hàm như chuỗi từ trên xuống dưới. và trong tất cả những nơi chúng ta cần định nghĩa cùng chức năng và cung cấp. Sử dụng sendAction để bong bóng. và send bong bóng phương thức từ bộ điều khiển đến phân cấp tuyến đường.

Điều này không được khuyến khích. mẫu phong cách cổ điển actions twiddle

2. hành động Đóng cửa Sử dụng action helper vượt qua chức năng thay vì chỉ chuỗi. để bạn không cần phải xác định nó ở khắp mọi nơi. sample twiddle for closure actions phong cách

3. route-action-helper addon Bạn có thể trực tiếp gọi hành động lộ trình từ bất cứ nơi nào theo nghĩa đen bởi chỉ gói chức năng sử dụng route-action helper.

Sample twiddle

So sánh giữa phong cách cổ điển và phong cách Đóng cửa và tại sao Đóng cửa là preferrable?

  • Theo kiểu cổ điển, bạn cần xác định hành động ở mỗi cấp và sử dụng sendAction để kích hoạt hành động ở mỗi cấp cho đến khi bạn thoát ra khỏi lồng.
  • Bạn có thể trả về giá trị trong các hành động đóng nhưng không thể thực hiện các tác vụ cổ điển.
  • Bạn có thể cà ri các giá trị trong các hành động đóng nhưng không thể thực hiện các hành động cổ điển.
  • Hành động đóng cửa không thành công ngay lập tức nếu không tìm thấy hành động. nhưng các hành động cổ điển theo thiết kế, sẽ làm uể oải chỉ gây ra lỗi khi yêu cầu giá trị.
  • Sự phức tạp mã hóa như ai sẽ xử lý các hành động và thực hiện logic nghiệp vụ ?.
  • Khi đóng, bạn có thể kết hợp hành động và trợ giúp mut để đặt thuộc tính có giá trị. onclick=(action (mut title) value="titlevalue")
  • Khi đóng, bạn có thể chỉ định đối tượng đích để gọi hàm. (action 'save' target=session) sẽ xem mã băm actions trên đối tượng session thay vì ngữ cảnh hiện tại.

Một số bài viết đầy hứa hẹn về vấn đề này,
- miguelcamba bài viết ember-closure-actions-in-depth
- emberigniter bài viết send-closure-actions-up-data-owner
- emberjs blog của 1.13 release article
- xưởng đóng tàu - ember-best-practice-stop-bubbling-and-use-closure-actions
- blog từ bản đồ Ember Why action helper?
- blog từ Alisdair McDiarmid ember-closure-actions-have-return-values
- blog từ alexdiliberto ember-closure-actions

+0

Tại sao * phong cách chức năng cổ điển kiểu cũ * không được khuyến khích? Bạn có thể giải thích thêm về sự khác biệt giữa (1) và (2) hay không. –

+1

@LiXinyang Cập nhật sự khác biệt và lý do đóng cửa được ưa thích và cùng với một số bài viết hay. – kumkanillam

+0

Cảm ơn bạn đã dành thời gian @kumkanillam. Đã bỏ phiếu! 10 Tất cả những tài liệu tham khảo là greats –

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