コード
次の 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
、入力の属性は正しく変更されますが、テスト要素の値プロパティは変更されません。私は何が欠けていますか?
document.querySelector('test-element').setAttribute('value', 'bar')
への呼び出しが適切に機能することにも注意してください。