Grails - cách gán dữ liệu từ view ngược lên layout
grails
3
view
1
layout
3
variable
2
White

Đỗ Danh Mạnh viết ngày 23/05/2015

Do cơ chế render tuyệt vời của Grails mà chúng ta có thể khai báo sử dụng các biến ở các layout mà có thể thay đổi từ view được.
Bí quyết nằm ở thuộc tính scope với giá trị là request của tag <g:set>

Cách sử dụng như sau:

Ở layout

Khai báo ở đầu trang

 <g:set var="_variables" value="[_page_heading: '', _page_small_title: '']" />
 <g:each in="${_variables}" var="_tmpVariable">
     <g:if test="${request[_tmpVariable.key] == null}">
        <g:set var="${_tmpVariable.key}" value="${_tmpVariable.value}" scope="request" />
     </g:if>
 </g:each>

Ta khai báo một biến tên _variables sẽ là nơi chứa các biến và dữ liệu mặc định mà ta sẽ khai báo.
Ở phần tag <g:each> chúng ta sẽ lặp qua các biến cần khởi tạo, xem sét biến nào chưa có thì sẽ khởi tạo cùng với dữ liệu mặc định của biến đó.
Chú ý: do các biến được gán trực tiếp vào biến requets nên cần đảm bảo các biến cần tạo không gây nhầm lẫn với các biến đã có trong request.

Sử dụng

 <g:if test="${request._page_heading}">
    <h1 class="page-heading">${request._page_heading}</h1>
</g:if>
<g:if test="${request._page_small_title}">
    <h4 class="small-title text-uppercase">${request._page_small_title}</h4>
</g:if>

Ở view

Khai báo các biến cần thay đổi ở layout

<g:set var="_page_heading" scope="request">
    Nhóm Thành Viên
</g:set>
<g:set var="_page_small_title" scope="request">
    Nhóm thành viên - ${user_group.groupName}
</g:set>
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Đỗ Danh Mạnh

2 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
1 3
TIL Bữa nay thấy trên fan page của Kipalog nói về tính năng TIL. Nhờ Kipalog mà tui biết TIL là cái chi chi nên tui copy lại mang về đây :D Loa ...
Đỗ Danh Mạnh viết 2 năm trước
1 3
Bài viết liên quan
Male avatar
2 0
Mình xin được giới thiệu về 4 cách sử dụng layout trong SailsJS mà mình biết: Cách 1: Đây là cách mặc định của SailsJS, layout dùng cho project s...
Nguyen Trong Tuan viết 3 năm trước
2 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
2 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!