gpt4 book ai didi

javascript - 了解 Polymer 事件和带有嵌套元素的数据绑定(bind)?

转载 作者:行者123 更新时间:2023-12-03 11:44:43 24 4
gpt4 key购买 nike

我有三个嵌套的 polymer 元素。它们每个都有默认值,可以用发布的值覆盖。

但是我做不到。

create 事件不存在已发布值。在 ready 事件中,子元素已 ready 并且未更新。

I made example js-bin.

实际上,每个元素都在单独的文件中。这是一个例子。

Object.assign - 用于合并对象的 es6 方法(使用 es6-shim)。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/es6-shim/0.18.0/es6-shim.js"></script>
<script src="http://www.polymer-project.org/components/platform/platform.js"></script>
<link href="http://www.polymer-project.org/components/polymer/polymer.html" rel="import">
</head>
<body unresolved>

<polymer-element name="my-field" attributes="ask">
<template>
<span><content></content> Message: {{message}}</span>
</template>
<script>
(function() {
Polymer('my-field', {
defaultAsk: { message: "Hello from Field!" },
created: function() {
console.log('created-field', this.ask, this.message);
Object.assign(this, this.defaultAsk);
},
ready: function() {
console.log('ready-field', this.ask, this.message);
Object.assign(this, this.ask);
}
});
})();
</script>
</polymer-element>

<polymer-element name="my-shelf" attributes="ask">
<template>
<my-field ask="{{field}}"><content></content></my-field>
</template>
<script>
(function() {
Polymer('my-shelf', {
defaultAsk: { field: { message: "Hello from Shelf!" } },
created: function() {
console.log('created-shelf', this.ask, this.field);
Object.assign(this, this.defaultAsk);
},
ready: function() {
console.log('ready-shelf', this.ask, this.field);
Object.assign(this, this.ask);
}
});
})();
</script>
</polymer-element>

<polymer-element name="my-cabinet">
<template>
<my-shelf ask="{{shelf}}"><content></content></my-shelf>
</template>
<script>
(function() {
Polymer('my-cabinet', {
ask: { shelf: { field: { message: "Hello from outside!" } } },
defaultAsk: { shelf: { field: { message: "Hello from Cabinet!" } } },
created: function() {
console.log('created-cabinet', this.ask, this.shelf);
Object.assign(this, this.defaultAsk);
},
ready: function() {
console.log('ready-cabinet', this.ask, this.shelf);
Object.assign(this, this.ask);
}
});
})();
</script>
</polymer-element>

<my-cabinet>Yo!</my-cabinet>

</body>
</html>

最佳答案

如果在许多嵌套元素中仅使用一个对象,那么所有内容都会按我想要的方式工作。

Example on js-bin

我的所有元素都扩展了其他元素(my-elem),仅用于删除重复的代码并使我的示例更具可读性。 ask - 绑定(bind)数据(从 my-cabinet 到 my-field)。 点击 - 更改数据。

不幸的是,在 jsbin 上查看触发消息的控制台非常不稳定。

我用嵌套元素制作了链事件的小型模式。也许,它会对某人有所帮助。

enter image description here

附:不要因为我的英语不好而踢我。

关于javascript - 了解 Polymer 事件和带有嵌套元素的数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26108189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com