前端组件化Polymer入门教程(6)——监听属性值变化
监听属性值变化
如果需要监听属性值变化可以通过给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都改变的时候才会执行这个方法。

如果只需要监听age和sex改变时就发生可以这样写。
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)——监听属性值变化的更多相关文章
- 前端组件化Polymer入门教程(1)——初识&&安装
前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...
- 前端组件化Polymer入门教程(8)——事件
可以在listeners对象中监听事件 <x-custom></x-custom> <dom-module id="x-custom"> < ...
- 前端组件化Polymer入门教程(3)——快速入门
本系列主要翻译官方的教程,因为国内目前这方面的资料太少了,但也不一定和官网的一样,反正就是自己想到哪就写到哪. 如果我没有说明,默认情况下index.html始终包含这段代码,后面将不会再贴上来. & ...
- 前端组件化Polymer入门教程(5)——生命周期
以前我对生命周期这个概念还真不是很清楚,不过想想也简单,比如说人的生命周期,无非就是生老病死.而对于程序的生命周期就是说,它在每个阶段都会做不同的事,再比如说回调函数把,ajax返回的时候它才执行,那 ...
- 前端组件化Polymer入门教程(2)——Hello world
本节为体验篇,就是让你了解它有哪些功能,不做详细说明,后面再来讲细节. 自定义元素 组件页 <link rel="import" href="../polymer- ...
- 前端组件化Polymer入门教程(7)——Local DOM
DOM元素的创建和管理被称为本地DOM(Local DOM) 本地DOM模板 如果你需要使用本地DOM,你们需要用<dom-module>并指定一个相匹配的ID. <dom-modu ...
- 前端组件化Polymer入门教程(4)——自定义元素
除了上一篇说到的创建自定义元素方法以外,还可以通过原生JS来创建,当你需要动态的创建元素时可以通过这种方式. template.html <link rel="import" ...
- 前端组件化Polymer深入篇(1)
在前面的几节里面简单的介绍了一下Polymer的基本功能,但还有一些细节的东西并没有讨论,所有打算花点时间把Polymer的一些细节写一下. new和createElement有区别吗? <sc ...
- HTML5 oninput实时监听输入框值变化的完美方案
在网页开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown.onkeypress.onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制.剪贴和粘贴这些操作,处理组合快 ...
随机推荐
- 1.3currentThread()方法
该方法可返回代码段正在被哪个线程调用的信息 package com.cky.test; /** * Created by chenkaiyang on 2017/12/2. */ public cla ...
- rpcbind.service启动失败
新装的服务器,启动rpcbind.service通常失败,执行下面的两个命令经常卡死,一直不返回,也不报错 #systemctl start nfs-server.service #systemctl ...
- 关于memcached
代振军 http://www.cnblogs.com/daizhj/archive/2009/03/23/1386652.html http://www.cnblogs.com/daizhj/arch ...
- uva1653
本来想刷道签到题结果被卡住了.这题题意描述有点问题,数字又不一定都是个位数...难道是我英语太差了? digits就表示0~9这几个数?唉,还是太弱了.这题就是用了一个bfs,应该说还是有点意思的,直 ...
- android 线程中断的处理
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4 ...
- POJ1274 The Perfect Stall
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25739 Accepted: 114 ...
- 用jquery将输入的文字的双向绑定
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- python36--将数据保存为excel
#!/usr/bin/env python # -*- coding: utf-8 -*- import xlwt import os class ExcelHelper(object): @stat ...
- SQL SERVER锁(LOCK)知识及锁应用
提示:这里所摘抄的关于锁的知识有的是不同sql server版本的,对应于特定版本时会有问题. 一 关于锁的基础知识 (一). 为什么要引入锁 当多个用户同时对数据库的并发操作时会带来以下数据不一致的 ...
- Seaching TreeVIew WPF
项目中有一个树形结构的资源,需要支持搜索功能,搜索出来的结果还是需要按照树形结构展示,下面是简单实现的demo. 1.首先创建TreeViewItem的ViewModel,一般情况下,树形结构都包含D ...