在Dart聚合物中访问ShadowDom中的htmlElement
我对Dart和Polymer很陌生,有一个问题我找不到答案 我正在编写一个简单的单页应用程序,并希望访问聚合元素阴影域中的buttonElement。(SDK 1.0和Polymer 0.9.3,Dart稳定版) 正如我从文档和api中了解到的,我应该使用:在Dart聚合物中访问ShadowDom中的htmlElement,dart,dart-polymer,Dart,Dart Polymer,我对Dart和Polymer很陌生,有一个问题我找不到答案 我正在编写一个简单的单页应用程序,并希望访问聚合元素阴影域中的buttonElement。(SDK 1.0和Polymer 0.9.3,Dart稳定版) 正如我从文档和api中了解到的,我应该使用: @覆盖 无效输入视图(){ super.enteredView(); submitButton=$['submitButton']; submitButton.disabled=真; } 下面是我的html: ... ... ... .
@覆盖
无效输入视图(){
super.enteredView();
submitButton=$['submitButton'];
submitButton.disabled=真;
}
下面是我的html:
...
...
...
...
在这个模板中,当我在enteredView方法的末尾打印出$['submitButton']时,我得到null
但是:当我更改html模板并且不将按钮放在nestend模板标记中时:
...
...
...
...
我有我的按钮,可以使用它。否则,enteredView(button.disabled)中的最后一个调用将抛出错误
有人能帮我吗?我做错了什么
提前谢谢
编辑:
只需启用/禁用按钮,就可以使用Dart中针对禁用属性的特殊表达式来完成
<button disabled?="{{buttonDisabled}}">
这将导致删除和添加禁用的属性。
在if或repeat模板中查找元素仍然不起作用。使用
$['id']
方法访问
或模板if=“…”>
中的元素还不起作用。Dart小组最近对此进行了讨论。我认为应该有一个功能的要求,但还没有找到他们 我不确定shadowRoot.querySelector('#id')是否有效 如果没有,那么AFAIK唯一的选项是
MutationObserver
,就像这里一样,因为在将元素插入DOM之前,您无法访问它
编辑:
submitButton=querySelector('submitButton')代码>也不起作用。尝试时,
的计算结果是否为true
?如果只想启用/禁用按钮,可以将disabled
属性绑定到元素类
的值,并在代码@observable bool btnSubmitDisabled=true中代码>。然后你甚至不需要获取按钮本身的引用。是的,我只想禁用/启用按钮,并首先尝试你的建议,因为我认为这是最干净的一个。但是
仍然处于禁用状态,因为禁用按钮的html规范需要具有“disabled”属性,任何位于“disabled”中的内容都将导致禁用按钮。是的,表达式的计算结果为true,否则我将看不到按钮。今晚我将尝试MutationObserver,谢谢所有链接!Polymer提供了对此类布尔属性的支持,但您必须在“=”之前添加一个“?”。好的,谢谢。我认为我在web上找到的WebUI中的解决方案一定有一个等价物。我会把答案贴在最上面的帖子里。