- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解何时可以访问组件的 shadowRoot。这是一组嵌套组件的图像:
所以有一些组件:
我已经使用打印 shadowRoot 的日志消息检测创建和附加的方法(sr => ...),我得到以下信息:
mortgageDetails [FINE]: MortgageDetails created sr => null (:1)
moneyInput [FINE]: MoneyInput created sr => null (:1)
numWithUnitsInput [FINE]: NumWithUnitsInput created sr => null (:1)
rateInput [FINE]: RateInput created sr => null (:1)
paymentSchedule [FINE]: PaymentSchedule created sr => null (:1)
dateInput [FINE]: DateInput created sr => null (:1)
mortgageDetails [FINE]: MortgageDetails attached with sr => Instance of 'ShadowRoot' (:1)
记录是有道理的。组件以合理的顺序创建,然后开始附加。但问题是,在附加其包含的 moneyInput 之前附加了抵押详细信息。如果我在 MortgageDetails.attached 中再添加一个日志语句,我可以看到它包含的 MoneyInput 对象有一个 shadowRoot:
mortgageDetails [FINE]: Composed moneyInput sr => Instance of 'ShadowRoot' (:1)
这是我做事方式的问题。我需要 MoneyInput 组件中的一些初始化事件才能进入 shadowRoot 并附加一些处理程序。我不能使用 created 因为 shadowRoot 甚至还没有设置。我正在尝试使用附加。我目前在 MoneyInput 的 attach 中有这样的代码:
_amountElement = shadowRoot.querySelector('#money-amount')
..onBlur.listen((evt) => reformatAmount())
..onFocus.listen((evt) => reformatAmount())
..onKeyUp.listen((evt) { if(evt.which == 13) reformatAmount(); });
由于正在附加 MortgageDetails 而 MoneyInput 尚未附加,因此 MortgageDetails 的实例无法使用包含的 MoneyInput,因为它未完全初始化。例如,在 MortgageDetails activate 中,我有:
(mortgageAmountInput = $["mortgage-amount"] as MoneyInput)
..label = r" $ Amount of Loan"
..onBlur.listen((_) => recalc())
..onFocus.listen((_) => recalc());
这失败了,因为 MoneyInput 的 activate 还没有被调用。我认为我真正需要的是一个表明已设置 shadowRoot 的事件,然后在该事件上我可以进行初始化。
我在聚合物元件的生命周期中遗漏了什么?
最佳答案
通常,如果您要扩展 PolymerElement
主要回调的顺序将是 ready
, created
, attached
.这些都是自上而下发生的:他们在后代之前被称为祖先。 ready
可能会令人困惑首先被调用,但这是因为 PolymerElement.created
在设置 DOM 甚至处理程序之后调用它,并且由于构造函数顺序发生在你的类之前 created
构造函数。
Polymer 还添加了一个 domReady
您可以重写的方法,当保证创建元素的子元素时调用该方法。这可能就是您所需要的。
参见 http://www.polymer-project.org/docs/polymer/polymer.html#lifecyclemethods有关生命周期方法的详细信息。
不过,首先我会看看您是否可以通过数据绑定(bind)和声明事件来回避排序问题。
关于dart - 什么时候 shadowRoot 可用于聚合物组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24468984/
我试图找到一些有关样式化聚合物 Dart 元素的信息,但没有成功。关于Stackoverflow的所有信息似乎均无效。有谁知道有关聚合物元素造型的一些最新信息? 我已经知道可以在哪里使用..标签。我尝
我有一个问题,我无法解决它。 我有 2 个聚合物元素嵌套。 主要 HTML 页面: index.html 在聚合物 HTML 定义中: polycontainer.html
我对 Dart 的新功能很满意。 但是,我想在 web 组件(聚合物)中使用 像这样: 文件.dart enum Categoria {ID, DESCRICAO, NATUREZA, ID_SUBC
我想遍历自定义聚合物元素的所有子元素 - 例如,将每个子元素放在一个新的 div 中。 {{child}} 当我尝试这个时,我得到了 child 的 toString() 版本
我有一个可以成功登录用户的函数。 _login: function() { var email = this.$.emailvalue.value; var password = this
当我使用 Polymer 库创建新应用程序时,它会生成一个示例项目。该项目在 Dartium 中运行良好,但当我编译它时(使用 pub build),它不再运行了。 我收到两个 404 错误和一个未捕
我尝试向一些动态创建的元素添加事件监听器,但我无法定位它们。 //here is how I try to access it _buildTable(data) { this.$.spinn
在 firebase-login 元素中我有 Login toggleLogin 调用的位置: toggleLogin: function() {this.$.loginModa
我是聚合物的新手。所以我只是按照教程。而且我不知道为什么屏幕上没有显示详细信息。 这是来自网络的代码:(指数) 第一聚
在聚合物中,我正在尝试手动提交表格。我的表格如下所示: Submit 在聚合物对象中,我有: submitForm: function(e) { e.preventDef
我正在尝试使用 Polymer 2.0 创建一个混合应用程序。我已经使用了polymer-2-application 和polymer-2-starter-kit 示例,并且在safari 浏览器上测
如何在点击时在函数内传递dom重复项?我的代码不起作用: {{item.name}} Polymer({ is: 'my-element',
如何获取iron-list中某些元素的模型?该文档建议: ($['list'] as IronList).modelForElement(target).index 但modelForElement(
我正在摆弄聚合物 Dart 0.10.0-pre.10 的"new"说明,才意识到我有包 0.9.5安装(在更新的 Dart 编辑器上)。并且只能使用 main() => dostuff(); 运行代
我正在Dart上开发我的第一个“复杂”应用程序,并且在使用多个 View 时遇到了一些麻烦(我想将应用程序开发为在单个页面中运行)。 首先,我假设此方法(使用Polymer)是处理应用程序各种 Vie
任何人都知道是否可以在 Dart 应用程序中使用常规的 html 5/javascript Web 组件库?我认为从现在开始,将会出现很多 html 5/javascript 中的 Web 组件库,它
我有以下代码。问题是我无法编辑div的内容。 div的确看起来像是一个可内容编辑的div,但它并不像它那样工作。我实际上无法编辑任何文本。我在某处犯错了吗? Content import
我正在尝试使用 Dart 和 Polymers 创建一个示例 CRUD 应用程序。 我注意到几乎所有 Dart 聚合物示例只有一页。我正在尝试寻找具有多页的样本。 IE。 屏幕包含人员对象表 然后,当
我正在尝试聚合物元素,目前正在尝试纸质表单元素。 我还没有设法找到是否可以在 Javascript 变量中获取纸质表单有效的事实。有什么想法吗? 我正在使用自动验证。 非常感谢! 最佳答案 p
我打算在 Polymer 中创建一个 classMixin,它提供自定义方法并将被其他元素继承。 一切都按预期工作,但我也想继承一些属性。 static get properties() {
我是一名优秀的程序员,十分优秀!