2011-04-29 51 views
-1

我正在開發一個應該是大型應用程序的可視化前端的grails插件。從應用程序到插件的通信將由消息驅動,就目前而言,正確的方法是使用grails服務接收消息。如何在視圖中連接grails服務和javascript代碼

考慮到會有幾個不同的消息類型,他們將影響視圖的不同部分(其中大部分是圍繞JavaScript庫建成,如jQuery,jQueryUI的,海軍報等),我不知道究竟怎麼了實現決策(哪個消息應該更新視圖的哪個部分),以及如何將服務中發生的東西連接到視圖中的javascript代碼。

一言以蔽之:

在哪裏執行決策的信息,以及如何與智能視圖中的javascript代碼連接Grails的服務。

P.S.我已經找不到類似的問題了,請原諒我,如果問題是「簡單」的,我試圖同時吸收大量新技術,而且我沒有太多時間來正確地做。

+0

有幾個問題:何時以及如何重繪視圖。它是否會被AJAX驅動?你打算進行一些民意調查/推式溝通? – julkiewicz 2011-04-29 10:31:54

+0

感覺對我來說太泛泛。高度依賴於消息的強度和功能。你能舉幾個具體的例子嗎? – 2011-04-29 10:37:22

+0

@julkiewicz基於區間的刷新也是可以接受的。每當出現新消息時,理想的解決方案就是刷新,但是,每隔幾秒自動刷新一次也不錯。 – Adis 2011-04-30 11:31:16

回答

1

服務無法呈現視圖。而他們不應該。這是控制器的工作。見MVC。消息驅動系統通常不會傳遞消息以進行視圖呈現。發送消息以便後端可以更新等。因此,這裏有一些選項...

重新思考你的消息驅動方法。如果您繼續沿着這條道路前進,則需要實施某種推送(comet)技術,以便服務可以通過此推送技術通知客戶某些內容已更改並需要更新。

你可以用ajax方法去執行輪詢(仔細地)或仍然使用push(comet)技術。

走向前沿,看看WebSockets

+0

不幸的是,消息驅動的方法既不是我的選擇,也不是我的改變力量。我必須與我的工作,所以我正在尋找如何處理我目前的情況的想法。我會研究推技術。 此外,我不想從服務渲染視圖,而是從服務發送一些信息到視圖,並以某種方式更新包含flot庫信息的JavaScript數組,並決定哪個圖應該是根據發送的消息進行更新。 – Adis 2011-04-30 11:27:15

+0

從服務渲染視圖並將信息發送到視圖是一回事。它不能(也不應該)從服務中完成。據我所知,使用推技術或ajax輪詢將是您唯一的選擇。但是,如果別人有更好的想法,我很高興聽到它。 – Gregg 2011-04-30 17:07:44

+0

我不會說「呈現視圖並將信息發送到視圖是一回事」。如果發送的消息是「模型部分N更新」,並且控制器在渲染視圖中的職責仍然存在 - 使用MVC可以。除此之外,我會第二個答案。 – 2011-05-01 06:16:19