我从<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>
答案 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: ""
}