ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Enyo에서의 Binding 사용 방법
    Development/Enyo 2014. 3. 30. 11:46

    Binding을 사용하여 두 지점 (From 과 To) 사이에 변화된 값을 자동으로 설정해 줄 수 있습니다.

     

    아래 예제는 기본적인 Binding 예제입니다.

     

    enyo.kind({

    name: "MyValueSlider",

    components: [{

    kind: "moon.Slider",

    name: "slider"

    }, {

    kind: "enyo.Control",

    name: "label"

    }],

    bindings: [{

    from: ".$.slider.value",

    to: ".$.label.content"

    }]

    });

     

    binding을 통해서 slider의 값을 자동으로 label에 넘겨주고 있습니다. 여기서 $ 노테이션 앞에 '.' 은 'this.'을 의미합니다. 만약 여기에 '^'을 사용한다면. 그것은 글로벌 스코프임을 말합니다.  

     

    아래 예제는 binding의 방향성 예제입니다.

     

    enyo.kind({

    name: "MyValueSlider",

    published: {

    sliderValue: 10 // Initial value of slider

    },

    components: [{

    kind: "moon.Slider",

    name:"slider"

    }, {

    kind: "enyo.Control",

    name:"label"

    }],

    bindings: [{

    from: ".sliderValue",

    to: ".$.slider.value",

    oneWay: false

    }, // two-way binding {

    from: ".$.slider.value",

    to: ".$.label.content"

    } // one-way binding ]

    });

     

    기본적으로 Binding은 from -> to 의 단방향(one-way)입니다. 하지만, oneWay : false 옵션을 추가하여 양방향(two-way)으로 만들 수 있습니다. 이렇게 양방향을 설정한 경우 초기에 sliderValue의 값이 slider의 초기값으로 설정이 됩니다. 이후에는 slider의 값이 변경되면 자동으로 sliderValue의 값도 변경합니다.

     

    아래 예제는 binding의 transform 함수 예제입니다.

     

    enyo.kind({

    name: "MyValueSlider",

    components: [{

    kind: "moon.Slider",

    name:"slider",

    min: 0,

    max: 1

    }, {

    kind: "enyo.Control",

    name:"label"

    }],

    bindings: [{

    from: ".$.slider.value",

    to: ".$.label.content",

    transform: function(val) {

    return "The slider value is " + Math.round(val * 100) + "%";

    }

    }]

    });

     

    transform 함수를 사용하면 From ->To 로 이동하는 값을 변경할 수 있습니다. 위 예제의 경우 slider의 값이 변경될 때마다 값을 % 값으로 변경하여 label에 전달합니다.

     

    아래 예제는 양방향 binding일 때 transform 함수 예제입니다.

     

    enyo.kind({

    name: "MyValueSlider",

    components: [{

    kind: "moon.Slider",

    name:"slider",

    min: 0,

    max: 1

    }, {

    kind: "moon.Input",

    name:"input"

    }],

    bindings: [{

    from: ".$.slider.value",

    to: ".$.input.value",

    oneWay: false, 

    transform: function(val, dir) {

    if(dir == "source"){

    return (val * 100) + "%";

    } else {

    return parseInt(val) / 100;

    }

    }]

    });

     

    transform 함수의 두번째 파라메터를 이용해서 방향을 지시할 수 있습니다. 예제에서는 input 에 입력된 값을 slider에 전달하는 예제입니다.

     

    (#참고 : 본 예제코드는 enyojs.com의 예제입니다.)

    댓글

Designed by Tistory.