12

StateManager trong Ember.js chưa được ghi lại đầy đủ, vì vậy tôi có một số câu hỏi liên quan đến việc sử dụng nó.Thực hành tốt nhất về StateManager trong Ember.js

  1. Nên cố gắng gọi .goToState chỉ từ bên trong người quản lý nhà nước?
  2. Đôi khi tôi thấy các phương pháp phản chiếu chính mình trong trình quản lý nhà nước trên chế độ xem, ví dụ: save: -> StateManager.send("save"). Điều đó có ý nghĩa hay tôi thiếu cái gì đó?
  3. Tất cả các sửa đổi mô hình (thường) có phải thông qua trình quản lý nhà nước không?
  4. Nếu một chế độ xem có các trạng thái khác nhau, nên được mô hình hóa bằng cách sử dụng ViewState với trạng thái con hoặc tôi nên sử dụng thuộc tính được tính và xem thuộc tính để giữ thông tin đó chỉ trong chế độ xem (không có trình quản lý nhà nước biết trạng thái lượt xem) ? *

* * Một ví dụ có thể là biểu mẫu ba bước, trong đó cùng một mẫu được sử dụng cho tất cả các tiểu bang, các khu vực khác nhau được hiển thị/ẩn trong ba bước.

Github tham khảo: https://github.com/emberjs/ember.js/tree/master/packages/ember-states/lib

+0

Tôi mong chờ phản hồi bạn nhận được về câu hỏi này. Tất cả các ví dụ tôi có thể tìm thấy trên mạng nội bộ là một chút quá đơn giản. Sau đó, một lần nữa, mọi thứ rất mới trong Ember.js, tôi chắc chắn rằng bất kỳ phương pháp nào bạn và tôi đưa ra là "chính xác" miễn là chúng hoạt động :) (Tôi hiện đang slogging/recoding một ứng dụng ngày càng tăng của tôi sử dụng StateManager. Nó hoạt động tốt, nhưng tôi, giống như bạn, tôi không chắc chắn tôi đang làm những điều "đúng"). – jeremyosborne

Trả lời

6

Nên cố gắng gọi .goToState chỉ từ trong tiểu bang người quản lý?

Có thể. Tôi không biết điều này chắc chắn, nhưng có vẻ như với tôi rằng bởi vì người quản lý nhà nước biết bạn đang ở trong tình trạng gì, đó là nơi để thực thi các chuyển tiếp trạng thái pháp lý. Nếu bạn gọi .goToState từ bên ngoài trình quản lý trạng thái, bạn đang thực hiện nó mà không biết bạn đang ở trạng thái nào, và đôi khi OK (có thể đó là trạng thái bạn thực sự có thể đến từ bất kỳ trạng thái nào khác). để được in.

Đôi khi tôi thấy các phương pháp phản chiếu của mình trong trình quản lý trạng thái trên chế độ xem, ví dụ: lưu: -> StateManager.send ("lưu"). Có phải có ý nghĩa hay tôi thiếu gì đó không?

Tôi thích những gì pangratz phải nói về điều này.

Mọi sửa đổi của mô hình (thường) có phải thông qua trình quản lý nhà nước không?

Cách tôi sử dụng statecharts, không. Tôi đã nhìn thấy một số người sử dụng statecharts là khá nhiều thay thế hoàn toàn cho lớp điều khiển, tuy nhiên, và nếu đó là cách bạn đang làm việc, thì có, nó nên đi qua người quản lý nhà nước. Mô hình này là để tránh thao tác trực tiếp các mô hình từ các khung nhìn; cho dù đó là một lớp điều khiển hoặc một nhà quản lý nhà nước ở giữa có vẻ như một điểm tranh luận với tôi.

Cách tôi sử dụng biểu đồ trạng thái, tuy nhiên, quản lý nhà nước được thực hiện để quản lý trạng thái của ứng dụng. Nó có thể chơi trình quản lý lưu lượng để sửa đổi mô hình nếu sửa đổi đó sẽ thay đổi trạng thái của ứng dụng (ví dụ: nếu có chỉ báo tiến trình trong khi cập nhật hoàn tất), nhưng có vẻ như tôi không cập nhật mô hình; chúng thuộc về bộ điều khiển.

Nếu một chế độ xem tiểu bang khác nhau, mà nên được mô hình hóa bằng cách sử dụng ViewState với bang con, hay tôi nên sử dụng thuộc tính tính toán và xem thuộc tính để giữ thông tin đó trong chế độ xem (mà không có sự quản lý nhà nước biết trạng thái nội bộ lượt xem)?

Tôi nghĩ rằng người quản lý nhà nước cần biết (hoặc phải biết) trạng thái nội bộ của chế độ xem.

Ngoài sự tò mò, bạn đến từ nền phát triển web hay nền tảng phát triển ứng dụng dành cho thiết bị di động/máy tính để bàn? Tôi đến từ sự phát triển web, và các bảng xếp hạng nhà nước là một khái niệm mới cho tôi. Tôi tìm thấy nó rất hữu ích để đọc the canonical State Chart paper bởi David Harel ('ware PDF!). Nó đáng ngạc nhiên có thể đọc được cho một bài báo học và đưa ra khái niệm biểu đồ trạng thái cơ bản nhất của thế giới SproutCore/Ember đã được sử dụng từ cuối năm 2010 (nghĩa là những gì mà Michael Cohen ghi nhớ khi ông viết Ki.)

+2

Một liên kết bổ sung: Frozen Canuck hay còn gọi là Statechart của Michael Cohen so với Controller http://frozencanuck.wordpress.com/2011/03/09/sproutcore-statecharts-vs-controllers/. Mặc dù cho SproutCore nó vẫn là một tài nguyên hợp lệ. – pangratz

+0

Từ nền phát triển web. – sandstrom

+0

Sau đó, giấy của Harel, hoặc cuốn sách của Ian Horrocks (nếu bạn có thể tìm thấy một cuốn sách với mức giá hợp lý) sẽ giúp bạn rất nhiều. – pjmorse

6

Về quan điểm của bạn :

đôi khi tôi thấy mình phản ánh phương pháp trong quản lý nhà nước về quan điểm, ví dụ save: -> StateManager.send("save"). Điều đó có ý nghĩa hay tôi thiếu cái gì đó?

Bạn có thể sử dụng action helper trong mẫu tay lái của bạn và thiết lập StateManager của bạn như target

{{action "send" target="App.stateManager"}} 

Và sự kiện send được gửi đến App.stateManager của bạn.

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