无法阅读属性&to toLowerCase'未定义的聚合物

时间:2015-08-04 22:12:05

标签: javascript polymer polymer-1.0

我从<input is="iron-input" bind-value="{{myValue}}">

获得了一个值

根据输入的{{myValue}}字符串,进行操作。但是如果用户键入大写字符串,那么他们将得到不正确的操作。

if (this.myValue === 'abc') {
    alert('lowercase str');
}

在上面的代码之前,我有这个,但我得到了&#34;无法读取属性等&#34;:

var str = this.myValue;
var res = str.toLowerCase();

if (res === 'abc') {
    alert('lowercase str');
}

这有正确的方法吗?感谢

修改

<dom-module id='my-app'>
 <template>
   <input is="iron-input" bind-value="{{myValue}}">
 </template>
<script>
 Polymer({
  is: 'my-app',
   properties: {
    myValue: {
     type: String,
     observer: "selectionChanged"
   }
  },
 selectionChanged: function () {
    var str = this.myValue;
    var res = str.toLowerCase();

    if (res === 'abc') {
        alert('lowercase str');
    }
 }
 });
</script>
</dom-module>

2 个答案:

答案 0 :(得分:0)

确保在您的聚合物元素上定义myValue属性。这段代码适合我:

<link rel="import" href="../components/polymer/polymer.html">
<link rel="import" href="../components/iron-input/iron-input.html">

<dom-module id="x-sample">
     <template>
         <input is="iron-input" bind-value="{{myValue}}">
         <button on-click="updateValue">myValue.toLowerCase()</button>
     </template>
     <script>
         Polymer({
             is: 'x-sample',
             properties: {
                myValue: String
             },
             updateValue: function (e) {
                var str = this.myValue;
                var res = str.toLowerCase();
                alert(res);
             }
         });
     </script>
 </dom-module> 

<强>更新

您需要在'properties'对象中定义属性(myValue),而不是在根对象上定义。

答案 1 :(得分:0)

我无法使用问题中发布的代码复制问题。根据Dev的回答,myValue对象应作为属性包含在内。有了这个修复,按钮是不必要的,一切似乎工作正常。

<dom-module id="my-app">
<template>
    <input is="iron-input" bind-value="{{myValue}}">
</template>
<script>
    Polymer({
        is: 'my-app',
        properties: {
        myValue: {
            type: String,
            observer: "selectionChanged"
        }
        },
        selectionChanged: function() {
            var str = this.myValue;
            var res = str.toLowerCase();

            if (res === 'abc') {
                alert('lowercase str');
            }
        }
    });
</script>

编辑:

此外,您只需添加一个空字符串作为默认值。

myValue: {
    type: String,
    observer: "selectionChanged",
    value: ""
}