代码
考虑以下 Polymer 自定义元素:
<dom-module id="test-element">
<template>
<input type="text" value="{{value}}">
<button>Reset</button>
</template>
<script>
Polymer({
is: 'test-element',
properties: {
'value': {
type: String,
reflectToAttribute: true,
notify: true,
value: null
}
}
});
</script>
</dom-module>
我在 index.html 中使用这个自定义元素,如下所示:
<html>
<head>
<script type="text/javascript" src="bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="test-element.html">
<title>Test App</title>
</head>
<body>
<test-element value="test"></test-element>
</body>
</html>
问题
我相信我已经将该value
属性声明为双向绑定(notify: true
);然而,当我单击输入并输入一些文本(例如,"foo"
)时,它不会反映在模型中(即调用document.querySelector('test-element').value
返回我在 index.html 中设置的值,"test"
)。有趣的是,value
输入的属性正确更改,但我的测试元素的 value 属性没有。我错过了什么?
我还应该注意到调用document.querySelector('test-element').setAttribute('value', 'bar')
正常工作。