2014-04-02 53 views
1

我需要在具有自動完成的輸入文本中輸入文本;然後選擇對象本。Grails - 自動完成,接收清單,最簡單的方法2014

我有jQuery的自動完成:http://jqueryui.com/autocomplete/#default

但我不明白我怎麼可以通過它的$ {estrategia.Book.list()}

這是我的選擇,它具有列表:

<g:select id="estudiante" name="estudiante.id" 
    from="${estrategia.Book.list()}" optionKey="id" required="" 
    value="${bookInstance?.id}" class="many-to-one" /> 

這是JQuery的自動完成,而不是availableTags我需要把書目:

<script> 
$(function() { 
var availableTags = [ 
"ActionScript", 
"AppleScript", 
"Asp", 
"Scheme" 
]; 
$("#tags").autocomplete({ 
source: availableTags 
}); 
}); 
</script> 

<div class="ui-widget"> 
<label for="tags">Tags: </label> 
<input id="tags"> 
</div> 

編輯:

所以我創建的標籤庫,沒有命名空間,這裏是我想,你可以指出我哪裏是我的錯誤?

<div class="ui-widget"> 
<label for="try">Tags: </label> 
<input id="try"> 
<g:books id="try"/> 
</div> 

我的taglib:

def books = {attrs -> 
    out << "<script type='text/javascript'>" 
    out << "books = [" 
    Book.list().each { 
     out << "'${it.title}'," 
    } 
    out << "];" 
    out << "</script>" 
} 

非常感謝你提前


編輯:嗯,我沒有解釋一切我想做的事......它的結果jQuery已經爲你做: http://jqueryui.com/autocomplete/#combobox

+1

twitter.github.io/typeahead.js是另一個可以實現你想要做的事情的JS庫,它也有一個grails插件(grails.org/plugin/twitter-typeahead)。 RichUI grails插件(grails.org/plugin/richui)中有一個自動完成標籤,它也具有自動完成功能(不知道它在封面下的用法可能只是jQuery)。我不知道哪種情況最適合您的情況我只是想爲您/其他人發佈其他一些自動填充選項 –

回答

0

我有一些simil AR和我剛剛創建了一個標籤庫來做到這一點:

def books = {attrs -> 
    out << "<script type='text/javascript'>" 
    out << "books = [" 
     Book.list().each { 
     out << "'${it.name}'," 
     } 
    out << "];" 
    out << "</script>" 
} 

,然後在GSP,你的JavaScript需要它,你只想做:

<foo:jsNodeTypes/> 

其中foo是你給了命名空間的標籤庫。

或者,您可以使用ajax,並根據需要自動完成從服務器請求數據。

+0

非常感謝Gregg,我會在明天之前嘗試。 – Alberici

+1

我可能不會執行'Book.list()',因爲您將根據您的懶惰/渴望設置填充該對象上的所有屬性以及潛在的相關對象。這可能是一個性能問題。我只會查詢你需要的數據。你可以使用'executeQuery'(http://grails.org/doc/latest/ref/Domain%20Classes/executeQuery.html)例如'Book.executeQuery(「Book b中選擇b.id,b.name」) ' –

+0

好吧,這似乎是一個非常重要的事情,我失蹤了,實際上我打電話給3個不同的Domain.list(),每次2次。每次我打電話給.list()時,我得到一個額外的延遲或只是第一個.list()使它?例如一個g:select在同一個GSP中有Book.list()和另一個g:select。list() – Alberici