如何在变化时获得可观察值的值?
问题描述:
这里是我的代码:如何在变化时获得可观察值的值?
飞镖:
import 'dart:html';
import 'package:polymer/polymer.dart';
@CustomTag('my-thing')
class MyThing extends PolymerElement {
@observable var val = "Hello, World";
MyThing.created() : super.created() {}
}
HTML:
<link rel="import" href="../../../packages/polymer/polymer.html">
<polymer-element name="my-thing">
<template>
<textarea id="asdf" value="{{val}}"></textarea>
<p>Val is: {{val}}</p>
</template>
<script type="application/dart" src="my_thing.dart"></script>
</polymer-element>
你可以看到val
表示textarea的价值。我想要做的是:当textarea的值发生变化时,将其中的最后一个单词,修改它,并用新文本更新textarea。
例如,如果用户键入“Hello,world”,我可能想要识别单词“world”并将其替换为全部大写版本“WORLD”。
我必须使用querySelector
来观察该字段,与我的@observable
行分开吗?我想这和它没有工作:
querySelector('#inputName').onInput.listen(someUpdate);
void someUpdate(Event e) {
print('changed');
}
我试了一下在MyThing
类,我试图在主,我试了一下的东西之外,并没有奏效。
我觉得应该有某种我可以听的事件,使用@observable
进行设置。在那儿?如果没有我可以听的东西或者没有我自己可以添加的自动回调,我怎样才能将我的querySelector
产品线改为实际工作?
答
我不知道textarea
是否有什么特别之处,但我想它应该满足您的需求,只需将valChanged
方法添加到您的MyThing
类。每次更改val
时都会调用此方法。
如果您在valChanged
内更改val
,则可能会遇到无限循环。
valChanged(oldValue, newValue) {
// do stuff here
}
,或者您可以使用change
事件
<textarea id="asdf" value="{{val}}" on-change="{{valChangeHandler}}"></textarea>
valChangeHandler(Event e) {
// here you get the element passed as `e.target`
// and you can access `val`
}
正是我一直在寻找。 – cilphex 2014-11-05 11:02:18
您是否知道是否有方法可以获取对其值发生更改的元素的引用? – cilphex 2014-11-05 12:10:16
我不认为这是可能的。你想达到什么目的? – 2014-11-05 12:11:04