Gil*_*erg 5 arrays push observers 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>
Run Code Online (Sandbox Code Playgroud)
我也尝试在观察者中使用bigs.push但没有成功.我不明白的一个部分是,如果我将以下行添加到我的"updateAll"函数中,观察者会捕获更改并触发"bigup".
this.bigs=[];
Run Code Online (Sandbox Code Playgroud)
对我来说,这篇文章也很有用,它涵盖了注册观察者的方式以及Justin XL建议的拼接方法.
注册观察员:
properties: {
users: {
type: Array,
value: function() {
return [];
}
}
},
observers: [
'usersAddedOrRemoved(users.splices)'
],
Run Code Online (Sandbox Code Playgroud)
使用Polymer 1.0方式调用拼接方法:
this.push('users', 'TestUser');
Run Code Online (Sandbox Code Playgroud)
https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-observation
仅供参考 - 这不适用于所有情况(我最初的想法) 当您在属性声明中注册观察者时,如下所示:
properties: {
users: {
type: Array,
value: function() {
return [];
},
observer: 'usersAddedOrRemoved'
}
},
Run Code Online (Sandbox Code Playgroud)
在这种情况下,usersAddedOrRemoved只有在为用户对象分配新数组时才会调用该方法.但是,当你通过推,弹出,拼接等方式改变数组时,它不会触发.
您需要使用pushPolymer 中的方法而不是执行this.bigs.push.
因此将该行代码替换为
this.push('bigs', {'conversation':[{'message':'hola'}]});
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请查看此链接。
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |