Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
通过Dart扩展PaperDialog并调用toggle()_Dart_Dart Polymer - Fatal编程技术网

通过Dart扩展PaperDialog并调用toggle()

通过Dart扩展PaperDialog并调用toggle(),dart,dart-polymer,Dart,Dart Polymer,我正在尝试扩展PaperDialog,以便我可以对其进行样式设置。我正试图从中使用方法3,但使用Dart而不是JS。这是我的部件 该组件似乎正确地呈现在DOM中-我可以通过向组件添加open=“true”来验证它是否正常工作-这呈现得非常好,例如: 多恩 但我不希望它自动显示,当试图找到一种方法通过Dart调用此组件上的toggle()时,问题就出现了。在上面链接的解决方案()中,通过JS调用: 聚合物('x-dialog-3'{ 切换:函数(){ 此.$.dialog3.toggle

我正在尝试扩展PaperDialog,以便我可以对其进行样式设置。我正试图从中使用方法3,但使用Dart而不是JS。这是我的部件


该组件似乎正确地呈现在DOM中-我可以通过向组件添加open=“true”来验证它是否正常工作-这呈现得非常好,例如:


多恩
但我不希望它自动显示,当试图找到一种方法通过Dart调用此组件上的toggle()时,问题就出现了。在上面链接的解决方案()中,通过JS调用:


聚合物('x-dialog-3'{
切换:函数(){
此.$.dialog3.toggle();
}
});
但是,如果我尝试在dart中实现相同的功能,我将无法检索到具有toggle()方法的组件:

shadowRoot.querySelector('hc-dialog').toggle();
结果在Object.noSuchMethod中。通过反射检查返回的对象可以清楚地看到:

var he=shadowRoot.querySelector('hc-dialog');
var cm=反射(he)。类型;
while(cm!=null){
印刷品(厘米);
cm=cm.超类;
}
给出:

'HtmleElement'(:1)上的类镜像 “元素”上的类镜像(:1) “节点”上的类镜像(:1) “EventTarget”上的类镜像(:1) “NativeFieldWrapperClass2”上的ClassMirror(:1) “对象”上的类镜像(:1) ==>我的对话框不是PaperDialog/CoreOverlay,这就是为什么我不能对其调用toggle()


这种方法有什么问题?如何启动我可以调用toggle()的功能?

Polymer.dart core和paper元素只是Polymer.js元素的包装。这类元素不支持扩展,因为Dart类不能扩展JS类

嗯,我想知道我是否遗漏了什么。polymer的一大优势是可以导入和扩展web组件库。我是否正确理解,如果我使用Polymer Dart,那么用JS开发的组件世界将无法扩展?是否在任何地方记录了该限制?要么在这里,要么在这里,都是很好的候选人。你知道这在未来会不会改变吗?好的,我发现了这个:-想知道这个问题是否不像我现在看起来的那么大。有点像交易破坏者。对于我非常具体的用例,我可以通过使用:shadowRoot.querySelector('hc-dialog').setAttribute('opened','true');-如上所述,该组件是完全功能性的-我只是找不到访问方法(例如toggle())的方法-抱歉-只能工作一次。这会反复工作:shadowRoot.querySelector('hc-dialog')…setAttribute('opened','false')…setAttribute('opened','true');您当前的代码是什么样子的。我假设你不再扩展纸张对话框了。