Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何检查自定义元素是否已注册?_Html_Dart_Dart Polymer - Fatal编程技术网

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">--> 但这是一个困难的方法,因为我们应该首先创

某些方法创建自定义元素的新实例(使用polymer创建)并将其附加到页面上。但我想在添加元素之前检查元素是否已注册,并在坏情况下将错误打印到控制台。我的意思是,如果我忘记了导入组件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()的引用,否则您将无法创建元素的实例。
因此,您只需要检查是否已经有了对构造函数的引用。另见