聚合物 2.0 :P租赁 解释观察器方法在此代码中的工作原理?



这是代码片段,但我无法理解观察者方法是如何工作的

static get properties() {
return {
selected: {
type: Object,
observer: '_selectedChanged'
}
};
}
_selectedChanged(selected, oldSelected) {
if (oldSelected) oldSelected.removeAttribute('selected');
if (selected) selected.setAttribute('selected', '');
}
connectedCallback() {
super.connectedCallback();
this.selected = this.firstElementChild;
}

完整代码:https://codelabs.developers.google.com/codelabs/polymer-2-carousel/index.html?index=..%2F..%2Findex#3

什么是选择和旧选择,我们如何做oldSelected.removerAttribute? 这些对象是元素吗? 请详细说明!

selected是元素的属性。它的值是一些 HTML 元素(在这种情况下,我认为它总是 img),因此,selected属性中始终保存对 html 中某处img的引用。当此属性更改时,将使用 2 个参数调用函数_selectedChanged。第一个参数是当前保存在selected中的新图像,第二个参数是旧图像(以前的值为selected)。

在教程中,您可以进一步查看代码

const elem = this.selected.nextElementSibling;
if (elem) {
this.selected = elem;
}

其中显示const elem采用一些 html 元素并将其放入this.selected中。

因此,在函数_selectedChanged中,他们从先前选择的旧图像中删除了html属性(因此它在屏幕上可见),并将新的html属性添加到现在应该在屏幕上可见的新图像中。

您可以想象,具有属性selectedimg是当时屏幕上显示的唯一一个

我希望你能理解我的解释。我的英语不是100%,所以如果你有问题,问我,我可以尝试解释更多。

编辑

绑定和观察器的一些示例:

假设我们有一些paper-input应该根据此输入的值显示一些结果(例如文章)。所以我们有一些 HTML:

<paper-input value="{{search}}" label="Find articles"></paper-input>

这是原始的。只是一些paper-input,价值存储在search财产中。内部脚本标记:

Polymer({
is: 'test-el',
properties: {
search: {
type: String,
observer: "_findResults"
},
articles: {
type: Array
}
},
_findResults() {
this.set("articles", ['firstArticle', 'secondArticle', Math.random()]);
},
});

解释:我们定义了属性searcharticles。每当属性搜索发生变化时,它都会调用函数_findResults(因为观察者)。函数_findResults只做一件事。this.set("articles")几乎和this.articles =一样。有关此内容的更多信息,请参阅文档。所以this.set("articles", ['firstArticle', 'secondArticle', Math.random()]);意味着它创建数组并将其设置为articles属性。现在,当我们有一些数组在每次用户在paper-input中输入一些值时都会更改时,我们可以添加一些 HTML 来显示这些文章:

<template is="dom-repeat" items="{{articles}}" as="item">
[[item]] <br>
</template>

我也做了小提琴,所以你可以玩它并更多地理解它。 https://jsfiddle.net/2va41sy0/1/

您一开始的问题几乎相同,因为它们存储在对 HTML 对象而不仅仅是字符串的某些属性引用中。这也是关于理解javascript的一些基础知识,而不是聚合物

相关内容

最新更新