egovGrid 그리드 셀 비동기 렌더링 예제 

HTML

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
<script src="http://egov.angularjs.or.kr/build/eGovNg.js"></script>
<link rel="stylesheet" href="http://egov.angularjs.or.kr/build/css/eGovNg.css">
<div ng-app="myApp" ng-controller="myController">
    <div egov-grid name="demoGrid" dataset="userList" enable-async-post-render="true">
        <table>
            <thead>
                <tr>
                    <th>이름</th>
                    <th>이메일</th>
                    <th>등록일</th>
                    <th>결혼유무</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>{{name}}</td>
                    <td>{{email}}</td>
                    <td>{{regDate}}</td>
                    <td async-post-render="rederCircle">{{married}}</td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

CSS

.eGovGrid-container {
    height: 400px;
}

JavaScript

//'ngGrid' 모듈을 인젝션
angular.module('myApp', ['egov.ui'])
    .controller('myController', function ($scope) {
    //그리드 데이터
    $scope.userList = [{
        id: "haibane",
        name: "재도",
        email: "[email protected]",
        regDate: "20130910",
        married: false
    }, {
        id: "jeaha",
        name: "재하",
        email: "[email protected]",
        regDate: "20130910",
        married: false
    }, {
        id: "jisu",
        name: "지수",
        email: "[email protected]",
        regDate: "20130910",
        married: false
    }, {
        id: "hanhang",
        name: "한행",
        email: "[email protected]",
        regDate: "20130910",
        married: true
    }];
       
    $scope.rederCircle = function(cellNode, row, dataContext, colDef){
        var canvas = $('<canvas width="100px" height="25px">');
        var canvasCtx = canvas[0].getContext("2d");
        var centerX = canvas[0].width / 2 - 2;
        var centerY = canvas[0].height / 2 - 2;
        
        jQuery(cellNode).empty().append(canvas);
        
        if(dataContext.married == true){
            canvasCtx.beginPath();
            canvasCtx.arc(centerX, centerY, 10, 0, Math.PI*2, true); 
            canvasCtx.closePath();
            canvasCtx.fill();
        }else{
            canvasCtx.beginPath();
            
            canvasCtx.moveTo(centerX - 20, centerY - 20);
            canvasCtx.lineTo(centerX + 20, centerY + 20);
        
            canvasCtx.moveTo(centerX + 20, centerY - 20);
            canvasCtx.lineTo(centerX - 20, centerY + 20);
            canvasCtx.stroke();
        }
    }
});