一 , 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之属性绑定相关推荐

  1. java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数

    在Spring MVC中,很容易将请求参数绑定到处理请求的方法参数. 我只是使用@RequestParameter("name"). 但是我可以对request属性做同样的事情吗? ...

  2. 用DataBindings属性绑定控件的值

    WinForm中的很多控件,如Label.TextBox等都包含DataBindings属性,其类型为ControlBindingsCollection,是Binding类的集合.Binding类代表 ...

  3. Ember.js 入门指南——handlebars属性绑定

    2019独角兽企业重金招聘Python工程师标准>>> 本文从http://www.ibeginer.sinaapp.com迁移过来,欢迎访问原页面. 简单讲属性绑定其实就是在HTM ...

  4. 案例:简单计算器|| 属性绑定||v-model指令的本质||样式绑定

    需求:实现简单的加法计算,分别输入数值a和数值b ,点击计算按钮,结果显示在下面. <!DOCTYPE html> <html lang="en"> < ...

  5. a标签居中 img vue_Vue中img的src属性绑定与static文件夹实例

    不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败. 大部分的情况中,是开发者使用了错误的写法,例如: 这样写肯定是不对的,正确的写法应该使用v-bind: ...

  6. VUE基本语法1-插值 属性绑定

    .1 插值绑定 插值绑定是Vue中最常见.最基本的语法,绑定的内容主要有文本插值和HTML插值两种 文本插值 文本插值的方式十分简单,只要用双大括号(Mustache语法)将要绑定的变量.值.表达式括 ...

  7. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.事件绑定 4.1.事件绑定(点击.双击.鼠标移动) 点击按钮-最简单的事件绑定(无参函数) 格式 点击按钮 ...

  8. SAP Spartacus 自定义指令的实现以及通过@HostBinding实现属性绑定

    使用命令行ng g d color: 实现源代码: import { Directive, HostBinding, HostListener } from '@angular/core';@Dire ...

  9. java属性绑定_java基础:10.1 Java FX与属性绑定

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面. JavaFX作为Java新一代的GUI编程框架,受到Java ...

最新文章

  1. uni-app 音频控制
  2. 图像翻译、语义分割、域适应、图像检索、无监督学习cvpr2021
  3. 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象
  4. 计算机主板风扇安装,5个装机注意事项 让你装电脑少走弯路
  5. 如何用mysql运行程序_如何在MySQL工作台中创建和执行程序
  6. VTK修炼之道48:图形基本操作进阶_符号化操作与模型区率计算
  7. 视频云下半场 向前走还是向“厚”走?
  8. ssl1763-观光旅游【最小环,Floyd,dijkstra】
  9. python实现用线程爬虫 快速高效爬数据
  10. Maven的依赖范围
  11. php运行时输出,在PHP中运行具有实时输出的过程
  12. 【android原生态RPG游戏框架源码】
  13. js/json 数组的操作
  14. 常见的python算法题_python笔试常见题
  15. 微信小程序防止恶意点击、多次点击
  16. pygame:超级玛丽
  17. Bzoj 2563: 阿狸和桃子的游戏 题解
  18. 读书笔记:《Designing Data-Intensive Applications》
  19. Java多文件压缩下载解决方案
  20. wps怎么将图片嵌入文字里_wps文档怎么把图片嵌入

热门文章

  1. VB 域名转换IP地址函数
  2. Linux操作系统下软件的安装与卸载
  3. 等级考试(二):二级C++---宏观把控
  4. 美国海关大量人脸数据泄露,暗网可以免费下载,锅被甩给外包公司
  5. 国内NLP领域单轮融资新纪录,达观数据获1.6亿元B轮投资
  6. 顶会ICML特别开设“怼日”Workshop,意见不同您尽管来
  7. 雷林鹏分享:使用Yaf Codes Generator工具构建YAF测试环境
  8. 网页打开Android APP
  9. C语言 · 猜算式
  10. 怎样实现MathType在Numbers中的运用