0
我正在將使用AngularJs在Play Framework 2.5中編寫的應用程序更改爲單個頁面應用程序。AngularJs在Play Framework 2項目中:模板渲染
下面是我在做什麼的概述:
- 顯示帖子列表,使用Scala的模板的@for
- 每個職位是使用包含的模板呈現
片段:
@for(post <- posts) {
@fragments.post(post)
}
到目前爲止,這裏是我用Angular做的:
- 使用$ HTTP使用Scala的JavaScript的路由,而不是@for
- 使用NG-重複,遍歷列表
- 每個崗位目前作爲純JSON來檢索數據庫的數據,採用{ {後}}
片段:
<ul>
<li ng-repeat="post in posts">
<div> {{post}} </div>
</li>
</ul>
現在有顯示每個職位有一些模板的麻煩,這裏有嘗試:
- 以某種方式將帖子作爲JSON傳遞給最初使用的Scala模板。我試着將模板的參數類型從Post(scala對象)改爲Json。當然,下面的代碼引起了「未發現:價值郵報」
如:
<li ng-repeat="post in posts">
@fragments.post({{post}})
</li>
- 使用角指令模板而不是Scala的模板:在下面的angularjs代碼,使用內聯模板工作得很好。我也可以使用templateUrl選項將模板外部化到其他文件。
例如爲:
<ul>
<li ng-repeat="post in posts">
<div mydirective></div>
</li>
</ul>
和JS:
mainApp.directive("mydirective", function() {
return {
//template: "<h1>Made by a directive: {{post.title}} !</h1>"
templateUrl: "/assets/path_to_template"
};
});
即使後者現在的工作,我甚至不能確定哪種方法會更好。我真的很喜歡能夠將整個表單傳遞給Scala模板,並讓它將UI表單綁定到控制器表單。 AngularJs與Play Framework的整合非常令人困惑,而Play-angular-seed並沒有讓我更加清楚。
什麼是實現上述目標的最佳方式?
謝謝
請看這裏http://stackoverflow.com/questions/16155542/dynamically-displaying-template-in-ng-repeat-directive-in-angularjs – mgosk
我最近建立了一個play/angular應用程序。我的做法是Play路由中的所有端點都是通過$ http調用角色。然後我爲任何需要的html角色提供靜態模板。任何以角度定義的路由都應該通過play來提供基本的角度應用(這樣你就可以直接導航到任何有角度的url)。只播放提供的HTML時,它提供整個應用程序或純角度模板。數據總是來自明確的$ http調用,並且永遠不會包含html(在我的情況下總是json)。 – gregghz
@gregghz有道理。另外,我開始使用Angular Material(我發現它看起來很華麗),有些事情還沒有適用於Play的Scala模板。我認爲最好的辦法是慢慢地離開模板。至於通過$ http發送數據,這似乎是合理的,但對於所有正在發送的數據對象,都需要有一個JSON編寫器,因此控制器可以在返回到Angular之前將模型函數傳遞給Json構建器 – Khorkhe