Egret之属性绑定
一 , DataModel(数据类)
①:需要继承 bind.BaseBindModel(为了发送属性数据)
②:需要监听的数值需要写setter/getter
③:在setter中使用changeValue方法
changeValue方法参数
1,属性名称
2,与属性对应的字段名称
3,值(要赋的值)
如:
module app {/*** 数据类-成员需要绑定*/export class DataTest extends bind.BaseBindModel {private _name : string = "Kayer";private _combat : number = 1;/*** 设置名称*/public set Name( $name : string ){this.changeValue<string>("Name","_name",$name);} /*** 获取名称*/public get Name() : string{return this._name;}public set Combat( $combat : number ){this.changeValue<number>("Combat","_combat",$combat);}public get Combat() : number{return this._combat;}public constructor() {super();}} }
二,在View(获取他地方)绑定数值
①:绑定需要使用bind.BindTool类(为了获得发送的属性数据并更新)
②:绑定方案有2种
1,属性绑定 : 直接将新值赋给绑定的值
静态方法 bindProperty<T>
参数5( 最后一个参数 ) : 是否马上用DataModel里面的值为View赋值,默认true
2,回调方法绑定 :
a,回调方法参数为 IBindEventData<T>
静态方法 bindCallBack<T>
参数4(最后一个参数):是否马上用DataModel里面的值为View赋值,默认true
③:销毁
bindProperty<T> 和 bindCallBack<T> 都会返回类 : Bind2Subscriber<T>
Bind2Subscriber<T>提供了销毁方法 : destory(),不需要监听(view关闭时)调用一下
如:
/*** 数据类-成员需要绑定*/export class DataTest extends bind.BaseBindModel {private _name : string = "Kayer";private _combat : number = 1;/*** 设置名称*/public set Name( $name : string ){this.changeValue<string>("Name","_name",$name);} /*** 获取名称*/public get Name() : string{return this._name;}public set Combat( $combat : number ){this.changeValue<number>("Combat","_combat",$combat);}public get Combat() : number{return this._combat;}public constructor() {super();}} } 二,在View(获取他地方)绑定数值 ①:绑定需要使用bind.BindTool方法 ②:绑定方案有2种 1,属性绑定 : 直接将新值赋给绑定的值 静态方法 bindProperty<T> 参数5( 最后一个参数 ) : 是否马上用DataModel里面的值为View赋值,默认true 2,回调方法绑定 : a,回调方法参数为 IBindEventData<T> 静态方法 bindCallBack<T> 参数4(最后一个参数):是否马上用DataModel里面的值为View赋值,默认true ③:销毁 bindProperty<T> 和 bindCallBack<T> 都会返回类 : Bind2Subscriber<T> Bind2Subscriber<T>提供了销毁方法 : destory(),不需要监听(view关闭时)调用一下 如:private vName : string = "CCCC";private vCombat : number = 0;private dataTest : DataTest = null;private dBind : bind.Bind2Subscriber<string> = null;//不用时需要销毁private dBind2 : bind.Bind2Subscriber<number> = null;//不用时需要销毁public constructor() {super();this.skinName = "resource/eui_skins/ButtonDemo.exml";egret.log( "init vName : " + this.vName );this.dataTest = new DataTest();egret.log( "======= 绑定字段(属性) ======" );this.dBind = bind.BindTool.bindProperty(this,"vName", this.dataTest , "Name",true);egret.log( "initChange vName : " + this.vName );this.dataTest.Name = "Aonaufly";egret.log( "Changed2Listener vName : " + this.vName );egret.log("======= 绑定回调方法 ======");egret.log("init vCombat :" + this.vCombat);this.dBind2 = bind.BindTool.bindCallBack( this.bindCallBack , this.dataTest , "Combat" , true );this.dataTest.Combat = 7;}private bindCallBack( $data : bind.IBindEventData<number> ):void{if( $data.$oldValue == undefined ){//初始化值egret.log( "initChange vCombat :" + $data.$newValue );}else{//监听值egret.log( "Changed2Listener vCombet :" );egret.log( "oldValue is : " + $data.$oldValue);egret.log( "newValue is : " + $data.$newValue );}this.vCombat = $data.$newValue;//赋新值}/*** 销毁*/public destory() : void{if( this.dBind != null ){this.dBind.destory();this.dBind = null;}if( this.dBind2 != null ){this.dBind2.destory();this.dBind2 = null;}}
结果:
转载于:https://blog.51cto.com/aonaufly/1977030
Egret之属性绑定相关推荐
- java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数
在Spring MVC中,很容易将请求参数绑定到处理请求的方法参数. 我只是使用@RequestParameter("name"). 但是我可以对request属性做同样的事情吗? ...
- 用DataBindings属性绑定控件的值
WinForm中的很多控件,如Label.TextBox等都包含DataBindings属性,其类型为ControlBindingsCollection,是Binding类的集合.Binding类代表 ...
- Ember.js 入门指南——handlebars属性绑定
2019独角兽企业重金招聘Python工程师标准>>> 本文从http://www.ibeginer.sinaapp.com迁移过来,欢迎访问原页面. 简单讲属性绑定其实就是在HTM ...
- 案例:简单计算器|| 属性绑定||v-model指令的本质||样式绑定
需求:实现简单的加法计算,分别输入数值a和数值b ,点击计算按钮,结果显示在下面. <!DOCTYPE html> <html lang="en"> < ...
- a标签居中 img vue_Vue中img的src属性绑定与static文件夹实例
不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败. 大部分的情况中,是开发者使用了错误的写法,例如: 这样写肯定是不对的,正确的写法应该使用v-bind: ...
- VUE基本语法1-插值 属性绑定
.1 插值绑定 插值绑定是Vue中最常见.最基本的语法,绑定的内容主要有文本插值和HTML插值两种 文本插值 文本插值的方式十分简单,只要用双大括号(Mustache语法)将要绑定的变量.值.表达式括 ...
- Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】
Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目 录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...
- SAP Spartacus 自定义指令的实现以及通过@HostBinding实现属性绑定
使用命令行ng g d color: 实现源代码: import { Directive, HostBinding, HostListener } from '@angular/core';@Dire ...
- java属性绑定_java基础:10.1 Java FX与属性绑定
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面. JavaFX作为Java新一代的GUI编程框架,受到Java ...
最新文章
- uni-app 音频控制
- 图像翻译、语义分割、域适应、图像检索、无监督学习cvpr2021
- 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象
- 计算机主板风扇安装,5个装机注意事项 让你装电脑少走弯路
- 如何用mysql运行程序_如何在MySQL工作台中创建和执行程序
- VTK修炼之道48:图形基本操作进阶_符号化操作与模型区率计算
- 视频云下半场 向前走还是向“厚”走?
- ssl1763-观光旅游【最小环,Floyd,dijkstra】
- python实现用线程爬虫 快速高效爬数据
- Maven的依赖范围
- php运行时输出,在PHP中运行具有实时输出的过程
- 【android原生态RPG游戏框架源码】
- js/json 数组的操作
- 常见的python算法题_python笔试常见题
- 微信小程序防止恶意点击、多次点击
- pygame:超级玛丽
- Bzoj 2563: 阿狸和桃子的游戏 题解
- 读书笔记:《Designing Data-Intensive Applications》
- Java多文件压缩下载解决方案
- wps怎么将图片嵌入文字里_wps文档怎么把图片嵌入