2012-03-01 98 views
1

我正在使用Play Framework,並且使用AJAX,想要將部分視圖返回給調用腳本進行呈現。我來自ASP.NET MVC的世界,所以這是一個非常簡單的概念,但我在Play中看不到它的位置。播放框架返回部分視圖

我願做一個例子:

main.html中

<html> 
<head><title>Test</title></head> 
<body> 
<h1>Here's my list</h1> 
<input type="text" id="new-entry" /><button id="add-new-entry">Add</button> 
<ul id="item-list"> 
    #{list items, as:'item'} 
    <li>#{anitemtemplate item}</li> 
    #{/list} 
</ul> 

<script> 
$(function() { 
    $("#add-new-entry").click(function() { 
    var action = #{jsAction @add(':name') /}; 
    var title = $("#new-entry").val(); 
    $.post(action(title), null, function(data) { 
     var newData = $(document.createElement("li")).html(data); 
     $("#item-list").append(newData); 
    }); 
    }); 
}); 
</script> 
</body> 
</html> 

anitemtemplate.html

${item.title} <em>by ${item.author}</em> 

Me.java

public static void add(String title) { 
    //add the item 
    return render("anitemtemplate", newitem); //how to do this?? 
} 
+0

有什麼錯誤?傳遞給渲染的變量總是具有相同的名稱,所以它應該是'render(「anitemtemplate,item)'。 – maartencls 2012-03-01 16:31:00

回答

0

它應該成爲:

public static void add(String title) { 
    //add the item 
    return render("anitemtemplate.html", item); 
} 

public static void add(String title) { 
    //add the item 
    renderArgs.put("item", newitem); 
    return render("anitemtemplate.html"); 
} 

而且如果anitemtemplate.html是在/ app /視圖/標籤/,像標籤使用假設在你的main.html中,你應該使用渲染(「標籤/anitemtemplate.html「) - 渲染的第一個參數是來自/ app/views /目錄的模板的相對路徑

而且順便說一句,

#{list items, as:'item'} 
    <li>#{anitemtemplate item}</li> 
    #{/list} 

應該

#{list items, as:'item'} 
    <li>#{anitemtemplate item /}</li> 
    #{/list}