用一种方法对聚合物的性能值进行刷新
Polymer refresh the property's value which is calculated by a method
我们目前正在做一个项目,其中我们使用了AngularJS和Polymer的组合。
我们有一些结构,但真正重要的是这段代码:
<template is="dom-bind" angupoly="{dataContainer:'dataContainer'}">
<menu-list for="places" data="{{dataContainer.getSomeData()}}">
</template>
我们在$scope上定义了一个名为dataContainer的变量,它是在控制器中设置的。问题是这段代码是在控制器准备该属性之前执行的,所以它是未定义的——它抛出:
[dom-bind::_annotatedComputationEffect]:计算方法
dataContainer.getSomeData()
未定义
数据永远不会再刷新,它不起作用。相反,如果有一个属性,它就会工作(它的第一个状态是否未定义并不重要),它会被刷新。
因为这在我们的应用中是非常重要的一点,我们想问。如何达到要求的行为?
谢谢,祝你有美好的一天!:)
我不熟悉聚合物,如果有可能延迟聚合物代码的执行,或者如果有一个可以在AngularJS中使用的摘要循环。
但是我猜你可以避免这种竞争条件与简单的ng-if=
结合在AngularJS方面的<ng-include>
-因为它不添加元素到DOM,从而避免与聚合物的任何类型的相互作用,直到它被包含。
所以例如:
<figure ng-if="dataContainer.getSomeData">
<ng-include src="'template.html'">
</figure>
在template.html中你的(未修改的)代码:
<template is="dom-bind" angupoly="{dataContainer:'dataContainer'}">
<menu-list for="places" data="{{dataContainer.getSomeData()}}">
</template>
如果这对你有帮助,我会很高兴-但正如我所说,这只是一个猜测,我不太了解聚合物以及它如何与DOM相互作用。
您看到的错误不是由未定义的dataContainer引起的,而是由对其调用的函数引起的。在数据绑定中,Polymer不支持这种类型的函数调用。来自文档:
数据绑定将自定义元素(宿主元素)的属性或子属性绑定到本地DOM中元素(子元素或目标元素)的属性或属性。
你正在调用一个属性上的函数,它不起作用。如果你想调用一个函数,你可以通过计算绑定来实现。
<menu-list for="places" data="{{getData(dataContainer.*)}}">
然而,这假设您的菜单列表被放置在一些父聚合物元素中,我不确定是否在这里使用dom-bind
时是这种情况。但是,如果确实有父元素,则可以在那里添加computed函数。
Polymer({
is: 'parent-element',
properties: {dataContainer: ....},
getData: function() {
return dataContainer.getSomeData();
}
});
getData
将在dataContainer或其子属性发生变化时被调用。
- 强制模板刷新ember.js
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- 如何通过ajax刷新JSF填充的javascript变量
- 如何解决Yii中的页面刷新问题
- 使用正则表达式评估电子邮件地址时出现性能问题
- Jquery提交表单而不刷新
- 刷新页面后会出现警报
- 刷新后保留对网页的更改
- React:按键的性能提升
- 如何在不刷新页面的情况下更新显示框
- 在Three.js中导出网格会提高性能吗
- 重定向时角度刷新浏览器
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- Javascript,输出结果后页面不断刷新
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 刷新父窗口后无法关闭窗口
- 刷新页面时hasClass不起作用
- X秒后刷新select元素
- 用一种方法对聚合物的性能值进行刷新