ajax 로 호출하여 리턴된 데이터를 처리할 때 화면 도시를 위해서 html 에 바인딩 하는 경우가 많다.

 

아래의 예시와 같은 경우

 

var callBackAjax = function(data){

var html = "<div>" + data.tVal +"</div>"

/// .... 중략

}

 

이는 js 소스에 대한 복잡도 증가 및 가독성을 떨어트리게 된다.

이를 극복하기 위해 jquery 의 tmpl 을 사용하는 경우도 있다.

 

필자가 제작한것은 tmpl 과 유사한 간단한 jquery 플러그인이다.

(function( $ ) {

    $.fn.generateHtml = function(data) {

    var html = $(this).html();

var array = html.match(/@{(\w+[.]?)+}/g);

if(array == null){

return html;

}

for(var i = 0 , len = array.length ; i < len ; i++){

html = html.replace(array[i], findValue(array[i], data));

}

return html;

    },

    findValue = function(key, data){

key = key.replace(/(@{|})/g, '');

return reclusive(key.split(".") , data);

},

reclusive  = function(keys, data){

var result = data[keys[0]];

if(result === undefined || result === null){

return '';

}

if(keys.length > 1){

return reclusive( keys.slice(1), result);

}

return result;

};

}(jQuery));

 

 

 

사용법 예시

 

 // 사용할 HTML 의 구조를 만들고 ID 를 부여한다.

 // @{데이터의 key} 로 사용할 데이터를 명시한다.

<script id="templateTag" type="text">
    <div>
         <div> @{tVal} <div>
         <div> @{pVal} <div>
         <div> @{oee.tVal} <div>
         <div> @{oee.pVal} <div>
    </div>
</script>

 

<script>

$(function(){
 var testData = {tVal : 100, oee : {tVal:"233", pVal : "555"}} // 예시 데이터
 // pVal 값이 없는 경우는 공백입력됨
console.log($("#templateTag").generateHtml(testData)); 

})
</script>

 

실행 결과

    <div>
         <div> 100 <div>
         <div>  <div>
         <div> 233 <div>
         <div> 555 <div>
    </div>

 

 

 

 

'IT > jquery' 카테고리의 다른 글

누석 시간 바 차트 컴포넌트  (0) 2016.07.25
jQuery 플러그인 화면 도시여부 체크  (0) 2016.01.20
[제이쿼리(jQuery)] lesson 6  (0) 2014.12.16
[제이쿼리(jQuery)] lesson 5  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 4  (0) 2014.11.24

C# 에서 제공하는 WebBrowser 컨트롤과 컨트롤안에 로드된 javascript 간의 통신방법이다.


1. javascript 에서 C# 호출방법

    아래와 같은 선언이 필요하며, 호출될 메소드는 당연히 public 이어야 한다. 


    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]

    [ComVisible(true)]

    public partial class AppContainer : Form{

         // .. 중략


        /**

         * 호출될 public 메소드

         * 호출받은 값을 메세지 박스로 보여줌

         */

        public void RecieveJs(Object msg)

        {

            MessageBox.Show(@"받은 값" + msg);

        }

        /**

         *  아래와 같이 호출시 리턴도 가능하다.

         *  디렉토리목록을 보여주고 선택한 디렉토리의 파일목록을 리턴함

         */

        public string ShowDirectory()

        {

            var files = String.Empty;

            var folderBrowser = new FolderBrowserDialog();

            if (folderBrowser.ShowDialog() == DialogResult.OK)

            {

                files = String.Join(",", Directory.GetFiles(folderBrowser.SelectedPath));

            }

            return files;

        }

    }


2. C# 에서 javascript 호출

C# form의 textbox 두개의 값을 버튼 클릭시 javascript 로 보내는 예제이다.

invoikeScript 를 통해 호출할 function 명 및 parameter 를 전송한다.

    // wb 는 WebBrowser 컨트롤 변수명

     private void SendBtn_Click(object sender, EventArgs e)

    {

         if (wb.Document != null)

         {

               Object[] objArray = {textBox1.Text, textBox2.Text};

              // javascript 의 recieveMessage function 을 호출함

               wb.Document.InvokeScript("recieveMessage", objArray);  

          }

     }


이상

'IT > C#' 카테고리의 다른 글

Control Docking  (0) 2014.12.02
폼(Form) 이동 막기  (0) 2014.12.02

javascript 에서 java의 stringformat 과 유사하게 사용하고 싶은 경우가 있다.

그렇다면 아래 로직을 추가하면된다.


if (!String.prototype.format) {

          String.prototype.format = function() {
               var args = arguments;
               return this.replace(/{(\d+)}/g, function(match, number) {
                    return typeof args[number] != 'undefined' ? args[number]
                              : match;
               });
          };
     }


{숫자} 를 해당 파라미터를 replace 함

(자바스크립트는 파라미터가 arguments 배열로 전달됨, 다른 포스트의 setTimeout 에 파라미터 넘기는 부분에서도 사용함  -> 해당예제)


사용방법 >

var str = "string replace : {0} , {1} => {1} , {0}".format("a","b") 
str 값은 "string replace : a , b => b , a"  가 된다.



'IT > javascript' 카테고리의 다른 글

String fommat 2  (0) 2015.08.03
javascript 의 arguments  (0) 2014.12.03
yuicommpressor (js /css 압축)  (0) 2014.11.24
setTimeout , setInterval , clearTimeout , clearInterval 사용  (0) 2014.11.22
setTimeout 에 파라미터를 넘기는 법  (0) 2014.11.22

이번에는 셀렉터에 대해 알아보도록 하자.

셀렉터는 해당 요소를 선택하기 위한 선택자이다. 정규식처럼 약속된 구문에 의해 해당하는 요소를 선택하여 반환해 준다.


제이쿼리의 셀렉터는 멀티브라우저 오픈 소스 셀렉터 엔진인 시즐(Sizzle)을 사용하고 있다.

기본적으로 css 의 셀렉터를 생각하면 된다.


기본 흐름은 다음과 같다.




셀렉터의 검색엔진을 통해 해당 요소를 검색하고 jquery 구문의 action 이 실행된다. 검색된 요소가 없다면 aciton 이 실행되지 않는다. 


가장 많이 사용하는 기본 셀렉터는 다음과 같다.

  • 태그이름
  • # + id 이름
  • . + 클래스이름


셀렉터 예시


 예시

설명

 $("*")

 모든 요소

 $(this)

 객체 자신에 대한 요소

 $("span")

 해당 span 태그에 대한 요소

 $("#deviceID")

 해당 id 를 포함한 요소

 $("p,span")

 p 태그와 span 태그  요소

 $("p.title")

 해당하는 p 태그 중 해당 클래스를 포함한 요소

 $("ul li:first")

 첫번째 ul 태그의 첫번째 li 에 대한 요소

 $("ul li:first-child")

 모든 ui 태그의 첫번째 li 에 대한 요소

 $("[name]")

 속성 name 을 가진 모든 요소

 $("tr:even")

 tr 태그중 짝수번째 요소

 $("tr:odd")

 tr 태그중 홀수번째 요소

 $("tr:eq(5)")

 tr 태그중 5번째 요소

 $(":disabled")

 속성 tag 중 disabled 된 모든 요소



아래의 창에서 간단히 확인이 가능하다.

좌측의 셀렉터를 클릭하면 해당하는 태그들이 선택이 된다.


 테스트(해당문구클릭)

 확인창

  • $("*")
  • $("p")
  • $("p,span")
  • $(".title")
  • $("tr:even")
  • $("tr:odd")
  • $("tr:eq(2)")
  • $("p:last")
  • $(":text")

<span>span태그</span>

<p>p태그</p>

<p class="title">p태그</p>

<table>

<tr><td>0</td></tr>

<tr><td>1</td></tr>

<tr><td>2</td></tr>

<tr><td>3</td></tr>

</table>

  

<p> p태그 마지막 </p>


'IT > jquery' 카테고리의 다른 글

[제이쿼리(jQuery)] lesson 5  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 4  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 2  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 1  (0) 2014.11.24
JQuery의 when  (0) 2014.11.21
jquery 의 when 은 deferreds 에 대한 처리 이후 실행될 함수를 정의하여 사용한다.
deferreds 란 ?
처리가 바로 완료되지 않는 작업들로 생각하면 된다. 대표적인 ajax 가 이에 포함된다.

기본 사용법
ex>

$.when($.ajax("/when.jsp")).done(function(){

console.log("완료 후 실행");
})


ajax 가 처리된 이후 done 에서 구현거나 참조된 function 이 실행됨

두개의 작업이 모두 처리된 후 수행되기를 원할 경우에는
ex>
$.when( $.ajax("/one.jsp")$.ajax("/two.jsp")).done(function(){
console.log("one, two 처리 후 실행");
});
 
 
해당 deferreds  가 실패시에 처리가 필요할 경우에는
$.when($.ajax("when.jsp")).then(successCallbackFn, errorCallbackFn);
var successCallbackFn = function(){
console.log("성공 처리 후 실행");
};
var errorCallbackFn= function(){
console.log("성공 처리 후 실행");
};
이와 같이 사용할 수 있다


'IT > jquery' 카테고리의 다른 글

[제이쿼리(jQuery)] lesson 5  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 4  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 3  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 2  (0) 2014.11.24
[제이쿼리(jQuery)] lesson 1  (0) 2014.11.24

+ Recent posts