Polymer: λͺ¨λΈ: μ‚¬μš©μž μž…λ ₯으둜 인해 숫자 데이터 μœ ν˜•μ΄ λ¬Έμžμ—΄λ‘œ λ³€ν™˜λ©λ‹ˆλ‹€.

에 λ§Œλ“  2015λ…„ 07μ›” 01일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: Polymer/polymer

Number 데이터 μœ ν˜•μœΌλ‘œ μ •μ˜λœ 속성은 μ‚¬μš©μž μž…λ ₯으둜 인해 String 데이터 μœ ν˜•μœΌλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€. 이 증상이 iron-input λ‚˜ paper-input μ—λ§Œ λ°œμƒν•˜λŠ” 것이 μ•„λ‹ˆλΌ 폴리머의 λ™μž‘μΈμ§€ κΆκΈˆν•©λ‹ˆλ‹€. 데이터 μœ ν˜• λ³€ν™˜μ„ μ€‘μ§€ν•˜λŠ” κ°„λ‹¨ν•œ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

λ‹€μŒ iron-input 아무 μˆ«μžλ‚˜ μž…λ ₯ν•˜μ„Έμš”. "λ¬Έμžμ—΄"이 항상 λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

index.html:

<!DOCTYPE html>
<html>
  <head>
    <script src="bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
    <link rel="import" href="proto.html">
  </head>
  <body>
    <proto-element></proto-element>
  </body>
</html>

proto.html:

<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/iron-input/iron-input.html">
<dom-module id="proto-element">
    <template>
        <input is="iron-input" bind-value="{{value}}">
    </template>
</dom-module>
<script>
    Polymer({
        is: "proto-element",
        properties:{
            value:{
                type:Number,
                value:1,
                observer:"valueChanged"
            }
        },
        valueChanged:function(n,o){
            if(typeof o != "undefined")
                alert(typeof n);
        }
    });
</script>
question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것은 폴리머의 λ™μž‘μ΄ μ•„λ‹ˆλΌ ν‘œμ€€ DOM λ™μž‘μž…λ‹ˆλ‹€. input νƒœκ·Έμ˜ value 속성은 λ¬Έμžμ—΄ κ°’μž…λ‹ˆλ‹€.

https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement

μ†μ„±μ˜ type: Number λŠ” 이에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 값은 역직렬화할 λ•Œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€.λ§ˆν¬μ—…μ˜ 속성 κ°’ . λ”°λΌμ„œ λ‹€μŒκ³Ό 같은 λ§ˆν¬μ—…μ΄ μžˆλŠ” 경우:

 <my-element value="123">

λ¬Έμžμ—΄ "123"으둜 value 속성을 κ΅¬μ„±ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. value κ°€ type: Number 경우
숫자 123으둜 μ—­μ§λ ¬ν™”λ©λ‹ˆλ‹€.

ν•œνŽΈ, 이것은:

<my-element value="{{hostValue}}">

호슀트의 hostValue 속성을 my-element 의 value 속성에 λ°”μΈλ”©ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” μœ ν˜• λ³€ν™˜μ΄ ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그듀은 같은 κ°€μΉ˜λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ μž…λ ₯의 λ¬Έμžμ—΄ 값을 λ‹€λ₯Έ κ²ƒμœΌλ‘œ λ³€ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 바인딩할 수 μžˆλŠ” valueAsNumber 속성을 μ œκ³΅ν•©λ‹ˆλ‹€.

    <input is="iron-input"  type="number" value-as-number="{{value::input}}">

λ˜λŠ” valueChanged λ©”μ„œλ“œμ—μ„œ 값을 κ°•μ œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    valueChanged:function(n) {
        if(typeof n == "string") {
          this.value = Number(n);
        }
    }

λͺ¨λ“  3 λŒ“κΈ€

이것은 폴리머의 λ™μž‘μ΄ μ•„λ‹ˆλΌ ν‘œμ€€ DOM λ™μž‘μž…λ‹ˆλ‹€. input νƒœκ·Έμ˜ value 속성은 λ¬Έμžμ—΄ κ°’μž…λ‹ˆλ‹€.

https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement

μ†μ„±μ˜ type: Number λŠ” 이에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 값은 역직렬화할 λ•Œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€.λ§ˆν¬μ—…μ˜ 속성 κ°’ . λ”°λΌμ„œ λ‹€μŒκ³Ό 같은 λ§ˆν¬μ—…μ΄ μžˆλŠ” 경우:

 <my-element value="123">

λ¬Έμžμ—΄ "123"으둜 value 속성을 κ΅¬μ„±ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. value κ°€ type: Number 경우
숫자 123으둜 μ—­μ§λ ¬ν™”λ©λ‹ˆλ‹€.

ν•œνŽΈ, 이것은:

<my-element value="{{hostValue}}">

호슀트의 hostValue 속성을 my-element 의 value 속성에 λ°”μΈλ”©ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” μœ ν˜• λ³€ν™˜μ΄ ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그듀은 같은 κ°€μΉ˜λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ μž…λ ₯의 λ¬Έμžμ—΄ 값을 λ‹€λ₯Έ κ²ƒμœΌλ‘œ λ³€ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ‹€μŒκ³Ό 같이 바인딩할 수 μžˆλŠ” valueAsNumber 속성을 μ œκ³΅ν•©λ‹ˆλ‹€.

    <input is="iron-input"  type="number" value-as-number="{{value::input}}">

λ˜λŠ” valueChanged λ©”μ„œλ“œμ—μ„œ 값을 κ°•μ œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    valueChanged:function(n) {
        if(typeof n == "string") {
          this.value = Number(n);
        }
    }

@arthurvans μžμ„Έν•œ μ„€λͺ… 정말 κ°μ‚¬ν•©λ‹ˆλ‹€!
Polymer의 FAQ에 μΆ”κ°€ν•˜λ©΄ λ‹€λ₯Έ μ‚¬μš©μžμ—κ²Œλ„ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

μ†Œν’ˆ μœ ν˜• arrayObjectλ₯Ό μ‚¬μš©ν•˜λŠ” 경우. μ΄λ ‡κ²Œ ν•΄κ²°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
https://github.com/pongpanot-t/lab-polymer/blob/master/data-binding/bind-prop-number.html

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰