我正在尝试在Dart中使用input mask jQuery插件。当我试图添加蒙版的元素不在web组件中时,这个插件工作得很好,但是当我将它添加到web组件中时,它就不再起作用了。对于不能工作的代码,我可以通过chrome控制台运行$("#phone-number").mask("(999) 999-9999");,它工作得很好。
下面的代码可以工作:
<!DOCTYPE html>
<html>
<body>
<input id="phone-number" type="text">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="jquery.maskedinput.min.js"></script>
<script type="application/dart">
import 'package:js/js.dart' as js;
void main() {
js.scoped(() {
var a = js.context.jQuery("#phone-number");
a.mask("(999) 999-9999");
});
}
</script>
<script src="packages/browser/dart.js"></script>
</body>
</html>以下代码不起作用:
<!DOCTYPE html>
<html>
<body>
<element name="x-phone-number">
<template>
<input id="phone-number">
</template>
</element>
<x-phone-number></x-phone-number>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="jquery.maskedinput.min.js"></script>
<script type="application/dart">
import 'package:js/js.dart' as js;
void main() {
js.scoped(() {
var a = js.context.jQuery("#phone-number");
a.mask("(999) 999-9999");
});
}
</script>
<script src="packages/browser/dart.js"></script>
</body>
</html>发布于 2013-06-23 03:15:57
这很可能是因为组件在主循环运行一次后才完全准备好,尝试添加一个计时器来启动查询,如下所示……
<!DOCTYPE html>
<html>
<body>
<element name="x-phone-number">
<template>
<input id="phone-number">
</template>
</element>
<x-phone-number></x-phone-number>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="jquery.maskedinput.min.js"></script>
<script type="application/dart">
import 'package:js/js.dart' as js;
import 'dart:async';
void _postMainSetup() {
js.scoped(() {
var a = js.context.jQuery("#phone-number");
a.mask("(999) 999-9999");
});
}
void main() {
Timer.run(_postMainSetup);
}
</script>
<script src="packages/browser/dart.js"></script>
<script src="packages/browser/interop.js"></script>
</body>
</html>我还添加了在最新的SDK中需要的interop.js脚本,因为jsinterop功能已经从dart.js中分离出来了。
https://stackoverflow.com/questions/17253961
复制相似问题