我正在开发一个Polymer应用程序,它从RESTful API中提取数据并使用它构建接口.我在概念上坚持的一个特定领域是http://www.polymer-project.org/docs/polymer/polymer.html#global中描述的Monostate模式的实现.实际上,我可以将声明性属性添加到新组件app-globals中,然后合理地直接访问它.
以下是关键问题:如果我通过core-ajax将数据来回(并且可能重新提交)到app-globals组件中的API,我该如何确保app-globals组件的所有使用者都具有相同的数据?如果我使用建议的模式,似乎我已经失去了我的单调性:
<polymer-element name="my-component">
<template>
<app-globals id="globals"></app-globals>
<div id="firstname"></div>
<div id="lastname"></div>
</template>
<script>
Polymer('my-component', {
ready: function() { this.globals = this.$.globals; }
});
</script>
</polymer-element>
Run Code Online (Sandbox Code Playgroud)
因为每个使用app-globals的组件都会提取自己的API数据版本.我错过了什么吗?还有另一种方法可以确保应用程序始终只有一个版本的真相吗?
假设我想为我的用户提供数据提供程序元素,例如
<user-data-provider user-data="{{data}}"></user-data-provider>
Run Code Online (Sandbox Code Playgroud)
它发送一个ajax请求并获取登录用户.
假设我想在不同的页面中访问我的用户数据,并将此标记添加到我需要的任何地方,但问题是,每次浏览器看到此标记时,再次生成ajax,我必须等到获取数据!
我知道我可以在我的主页面中创建一个变量并将其传递给子页面,但这对我来说似乎有些过分!
如何在不同页面和部分应用程序中保留用户数据?
先感谢您
<iron-meta>使用静态值时,我可以让我的实例正常工作.但是当我将值绑定到动态变量(使用{{}})时,它<iron-meta>不再按预期运行.
是否<iron-meta>支持将其值绑定到动态变量?
<iron-meta id="meta" key="info" value="foo/bar"></iron-meta> // works
<iron-meta id="meta" key="info" value="{{str}}"></iron-meta> // fails
Run Code Online (Sandbox Code Playgroud)
之前的工作
这个问题是对这个问题的改进,以澄清导致问题的唯一原因是从静态字符串值到动态字符串值绑定的变化.我得到了很多其他建议,这与从静态到动态的变化无关,所以我认为最好重写一下这个问题来澄清这一点.但是如果有帮助的话,整个代码上下文都包含在那里的链接中.
替代方案最近有一些关于使用的喋喋不休<iron-localstorage>.也许这是动态绑定基本上创建全局变量的最佳方式?
如何将观察者附加到作为数组的聚合物属性?要清楚,我希望在数组中的项更改时进行回调.为简单起见,假设我的数组是:
[
{ text: 'foo' },
{ text: 'bar' }
]
Run Code Online (Sandbox Code Playgroud)
我想要的东西:
observe : {
'items.text' : 'itemsChanged'
}
Run Code Online (Sandbox Code Playgroud)
以下作品,但显然是不可持续的:
observe : {
'items[0].text' : 'itemsChanged',
'items[1].text' : 'itemsChanged'
}
Run Code Online (Sandbox Code Playgroud)
请注意,在我的情况下,更改来自我控制的另一个聚合物元素.因此,如果我能够以某种方式触发对具有控制权的元素的更改{ text: 'foo' },那么也可以.