7

Một số thông tin/giả định:Ruby on Rails có Draper hay Apotomo là MVVM?

  1. Người ta nói rằng Ruby on Rails tuân theo mô hình kiến ​​trúc MVC.
  2. MVVM (Model View ViewModel), có nguồn gốc từ MVC, cung cấp lớp trừu tượng, tất cả các nút, nhãn và liên kết (View) được tách biệt với cách mô hình hiển thị dữ liệu (ViewModel).
  3. Một số khung Javascript, nổi trội trong việc xây dựng các ứng dụng Trang đơn, tận dụng mẫu MVVM (ví dụ Knockout.js).
  4. Nếu chúng tôi kiểm tra Ruby toolbox, chúng tôi sẽ thấy một số giải pháp trình bày như Draper và Apotomo hoạt động giống như một điều ViewModel.

Giả sử không có bs trong phần 'sự kiện' của tôi, có một điều làm tôi bực mình:

  • Chúng ta có thể gọi Rails với Draper, Apotomo (hoặc người dẫn chương trình khác/trang trí) một giải pháp MVVM ?
  • Chúng ta có thể nói rằng chúng ta đang theo mẫu MVVM với Rails, nếu chúng ta gói gọn dữ liệu từ mô hình trong một dạng container trang trí/người trình bày với Draper?
  • Hoặc có điều gì đó bị thiếu và chúng tôi không thể gọi nó là MVVM, như Knockout.js?

Cảm ơn thông tin chi tiết của bạn.

Trả lời

3

Không theo ý kiến ​​của tôi .... Tôi nghĩ MVVM là tạo đối tượng xem cụ thể bị ngắt kết nối khỏi đối tượng dữ liệu/miền bên dưới.

Với mẫu trình bày Rails, những người trình bày này thường sẽ quấn quanh đối tượng bản ghi đang hoạt động và thêm phương thức vào đối tượng đó liên quan đến bản trình bày.

+0

Trình bày/trang trí được kết hợp chặt chẽ với lớp Mô hình là chắc chắn trường hợp với Draper - Tôi đồng ý. Nhưng còn Apotomo thì sao? Hãy tưởng tượng, bạn đang sử dụng Apotomo để hiển thị biểu đồ (giả sử higcharts.com). Bạn mã nó để apotomo widget mất như là một loạt param dữ liệu (chỉ nhãn và số) và văn bằng nó theo một cách được xác định trước. Do cách tiếp cận như thế này đáp ứng mong đợi của bạn về "ngắt kết nối từ lớp mô hình"? Cảm ơn bạn đã trả lời và ý kiến ​​của bạn, tôi đánh giá cao điều đó! – socjopata

+0

@socjopata Vâng, tôi nghĩ rằng nếu bạn đã tạo ra một đối tượng xem và gửi nó đến apotomo, sau đó chắc chắn ... nhưng tôi không nghĩ rằng apotomo sẽ yêu cầu ngắt kết nối này. –

+1

Tôi đã hy vọng cho một số cuộc thảo luận nhiều hơn với người dùng stackoverflow khác về vấn đề này. Tuy nhiên, "đánh dấu màu xanh lá cây" thuộc về bạn. Cảm ơn bạn đã cho ý kiến ​​của bạn :) – socjopata