Html 如何检查自定义元素是否已注册?
某些方法创建自定义元素的新实例(使用polymer创建)并将其附加到页面上。但我想在添加元素之前检查元素是否已注册,并在坏情况下将错误打印到控制台。我的意思是,如果我忘记了导入组件html声明:Html 如何检查自定义元素是否已注册?,html,dart,dart-polymer,Html,Dart,Dart Polymer,某些方法创建自定义元素的新实例(使用polymer创建)并将其附加到页面上。但我想在添加元素之前检查元素是否已注册,并在坏情况下将错误打印到控制台。我的意思是,如果我忘记了导入组件html声明: <!--I forgot write it in my HTML file --> <!--<link rel="import" href="packages/visualytik/vis_starter.html">--> 但这是一个困难的方法,因为我们应该首先创
<!--I forgot write it in my HTML file -->
<!--<link rel="import" href="packages/visualytik/vis_starter.html">-->
但这是一个困难的方法,因为我们应该首先创建组件,并且必须在dart文件中导入MyCustomComponent.dart
。我可以用其他方式检查吗?比如:
document.isRegistered('my-custom-component');
更新3
您还可以使用新的@HtmlImport
注释。如果导入该类,则可以确保还导入了元素的HTML。另见
更新2
看
更新
在您的elements类中使用自定义构造函数并在那里进行注册,但前提是尚未完成注册
class MyCustomComponent extends ... {
bool _isRegistered;
bool get isRegistered => _isRegistered;
factory MyCustomComponent() {
if(!isRegistered) {
registerElement();
_isRegistered = true;
}
return new Element.tag('my-custom-element');
}
}
然后创建新实例,如
new MyCustomElement();
您可以始终确保元素只注册一次(当然,您始终需要使用此构造函数)
原创
例如,如果您自己调用document.registerement()
来注册元素,而不是依赖于Polymer,则需要保留对构造函数引用document.registerement()的引用,否则您将无法创建元素的实例。
因此,您只需要检查是否已经有了对构造函数的引用。另请参见更新3
您还可以使用新的@HtmlImport
注释。如果导入该类,则可以确保还导入了元素的HTML。另见
更新2
看
更新
在您的elements类中使用自定义构造函数并在那里进行注册,但前提是尚未完成注册
class MyCustomComponent extends ... {
bool _isRegistered;
bool get isRegistered => _isRegistered;
factory MyCustomComponent() {
if(!isRegistered) {
registerElement();
_isRegistered = true;
}
return new Element.tag('my-custom-element');
}
}
然后创建新实例,如
new MyCustomElement();
您可以始终确保元素只注册一次(当然,您始终需要使用此构造函数)
原创
例如,如果您自己调用document.registerement()
来注册元素,而不是依赖于Polymer,则需要保留对构造函数引用document.registerement()的引用,否则您将无法创建元素的实例。
因此,您只需要检查是否已经有了对构造函数的引用。另见