gpt4 book ai didi

arrays - Polymer 1.0 观察者 - 不在数组上工作

转载 作者:行者123 更新时间:2023-12-02 06:37:24 25 4
gpt4 key购买 nike

我设置了一个观察者来捕获数组属性上的所有 polymer 识别事件,但我捕获它来捕获更改。在下面的示例中,我的观察者函数“bigup”仅在属性“bigs”首次初始化时才会被调用。

<dom-module id="parent-page">
<template>
<paper-button on-click="updateAll">Update</paper-button>
</template>
<script>
var temp=[];
temp.push({'conversation':[{'message':'hello'}]});

Polymer({
is: 'parent-page',
properties: {
bigs: {
type: Array,
value: temp
}
},
observers: [
'bigup(bigs.*)'
],
updateAll: function(){
this.bigs.push({'conversation':[{'message':'hola'}]});
console.dir(this.bigs);
},
bigup: function(){
console.log('big Up');
}
});
</script>

我也尝试在观察者中使用bigs.push,但没有成功。我不明白的一部分是,如果我将以下行添加到我的“updateAll”函数中,观察者会捕获更改并触发“bigup”。

this.bigs=[];

最佳答案

对我来说this article也很有帮助,它涵盖了注册观察者的方法以及 Justin XL 建议的拼接方法。

注册观察者:

properties: {
users: {
type: Array,
value: function() {
return [];
}
}
},

observers: [
'usersAddedOrRemoved(users.splices)'
],

调用以 Polymer 1.0 方式拼接方法:

this.push('users', 'TestUser');

https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-observation

仅供引用 - 这并不适用于所有情况(我最初的想法)当您在属性声明中注册观察者时,如下所示:

 properties: {
users: {
type: Array,
value: function() {
return [];
},
observer: 'usersAddedOrRemoved'
}
},

在这种情况下,仅当您将新数组分配给 users 对象时才会调用 usersAddedOrRemoved 方法。然而,当您通过压入、弹出、拼接等方式改变数组时,它不会触发。

关于arrays - Polymer 1.0 观察者 - 不在数组上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32215861/

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