监听属性值变化

如果需要监听属性值变化可以通过给observer赋值一个回调函数。

<say-Hello></say-Hello>
<dom-module id="say-Hello">
<template>
<h1>{{say}}</h1>
</template>
</dom-module>
<script>
Polymer({
is:'say-Hello',
properties:{
say:{
type:String,
value:'hello',
observer:'attrChange'
}
},
listeners:{
'click':'setAttr'
},
setAttr:function(){
this.say = 'attr';
},
attrChange:function(){
console.log('属性值已改成' + this.say);
}
})
</script>

当属性值发生改变时,就会触发这个回调函数,注意只有你一开始写了value这个属性就会触发一次,另外如果值没有改变也是不会执行的。

可以在listeners里面写事件,值为一个回调函数,写法和js一样,去掉on。

另外发现attrChange函数里面的第一个值为say

attrChange:function(e){
console.log(e);
console.log('属性值已改成' + this.say);
}

这种方法只能观察一个属性,如果需要观察多个属性的变化,可以用更为复杂的observers

<say-Hello></say-Hello>
<dom-module id="say-Hello">
<template>
<h1>{{userName}}</h1>
</template>
</dom-module>
<script>
Polymer({
is:'say-Hello',
properties:{
userName:String,
age:Number,
sex:String
},
attached:function(){
this.userName = '老王';
this.age = 25;
this.sex = '男';
},
observers:[
'updataSay(userName,age,sex)'
],
updataSay:function(userName,age,sex){
console.log(userName,age,sex);
}
})
</script>

observers值是一个数组,数组里面可以写回调函数, 'updataSay(userName,age,sex)'意思是当userName&&age&&sex都改变的时候才会执行这个方法。

如果只需要监听agesex改变时就发生可以这样写。

updataSay(age,sex)

如果只写一个,那么和observer是一样的。

监听一个对象的属性变化
<say-Hello></say-Hello>
<dom-module id="say-Hello">
<template>
<input value="{{user.name::input}}">
</template>
</dom-module>
<script>
Polymer({
is:'say-Hello',
properties:{
user: {
type: Object,
value: function() {
return {'name':'请输入内容'};
}
}
},
observers:[
'userNameChanged(user.name)'
],
userNameChanged: function(name) {
console.log('new name: ' + name);
}
})
</script>

监听数组的值变化
<x-custom></x-custom>
<script>
Polymer({
is: 'x-custom',
properties: {
users: {
type: Array,
value: function() {
return [];
}
}
},
observers: [
'usersAddedOrRemoved(users.splices)'
],
usersAddedOrRemoved: function(changeRecord) {
if(!changeRecord)return;
console.log(changeRecord);
},
ready: function() {
this.push('users', {name: "Jack Aubrey"});
},
});
</script>

通过传递splices我们可以查看数组里面的详细信息

index:指数,push的当前值

removed: 删除的数量

addedcount:插入的项目数。

object:项目

type:类型

完。

前端组件化Polymer入门教程(6)——监听属性值变化的更多相关文章

  1. 前端组件化Polymer入门教程(1)——初识&&安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

  2. 前端组件化Polymer入门教程(8)——事件

    可以在listeners对象中监听事件 <x-custom></x-custom> <dom-module id="x-custom"> < ...

  3. 前端组件化Polymer入门教程(3)——快速入门

    本系列主要翻译官方的教程,因为国内目前这方面的资料太少了,但也不一定和官网的一样,反正就是自己想到哪就写到哪. 如果我没有说明,默认情况下index.html始终包含这段代码,后面将不会再贴上来. & ...

  4. 前端组件化Polymer入门教程(5)——生命周期

    以前我对生命周期这个概念还真不是很清楚,不过想想也简单,比如说人的生命周期,无非就是生老病死.而对于程序的生命周期就是说,它在每个阶段都会做不同的事,再比如说回调函数把,ajax返回的时候它才执行,那 ...

  5. 前端组件化Polymer入门教程(2)——Hello world

    本节为体验篇,就是让你了解它有哪些功能,不做详细说明,后面再来讲细节. 自定义元素 组件页 <link rel="import" href="../polymer- ...

  6. 前端组件化Polymer入门教程(7)——Local DOM

    DOM元素的创建和管理被称为本地DOM(Local DOM) 本地DOM模板 如果你需要使用本地DOM,你们需要用<dom-module>并指定一个相匹配的ID. <dom-modu ...

  7. 前端组件化Polymer入门教程(4)——自定义元素

    除了上一篇说到的创建自定义元素方法以外,还可以通过原生JS来创建,当你需要动态的创建元素时可以通过这种方式. template.html <link rel="import" ...

  8. 前端组件化Polymer深入篇(1)

    在前面的几节里面简单的介绍了一下Polymer的基本功能,但还有一些细节的东西并没有讨论,所有打算花点时间把Polymer的一些细节写一下. new和createElement有区别吗? <sc ...

  9. HTML5 oninput实时监听输入框值变化的完美方案

    在网页开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown.onkeypress.onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制.剪贴和粘贴这些操作,处理组合快 ...

随机推荐

  1. 机器学习之Apriori算法和FP-growth算法

    1 关联分析 无监督机器学习方法中的关联分析问题.关联分析可以用于回答"哪些商品经常被同时购买?"之类的问题. 2 Apriori算法   频繁项集即出现次数多的数据集   支持度 ...

  2. 设置customer_id

    update t_user_identification u set u.customer_id = (select c.customer_id from t_customer c from t_us ...

  3. C#、.Net经典面试题目及答案

    1 请你说说   .NET  中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多.结构不能申明有默认的构造函数,为结构的副本是又编译器创建 和销毁的,所以不需要默认的构造函数和 ...

  4. poj3061

    #include<stdio.h> #include<iostream> using namespace std; #include<algorithm> cons ...

  5. csdn上讲一个实时计算架构比较清晰的一篇文章

    https://blog.csdn.net/ymh198816/article/details/51998085

  6. bootstrap datetimepicker

    一.datepicker 早期的 二.datetimepicker 适用于bootstrap2,3兼容性不太好 三.在github上找了个不错的:https://github.com/Eonasdan ...

  7. PHP内存溢出Allowed memory size of 解决办法

    PHP内存溢出Allowed memory size of 解决办法 博客分类: php   ============================Allowed memory size of  x ...

  8. JS学习笔记5_DOM

    1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性 ...

  9. 【转】C#模拟http 发送post或get请求

    原文地址:http://www.cnblogs.com/xssxss/archive/2012/07/03/2574554.html 模拟POST Json public static string ...

  10. JQuery Mobile - 自定义图标!

    环境 jquery1.9.1.js jquery mobile 1.4.2版 图标制作 18x18px 底透明的png图标 使用图标,这个过程开始怎么弄都不行,只有个灰色的圆出现,不见图标:或者出现图 ...