在实现Flex数据的双向绑定之前,由于自己对Flex刚接触所有处处碰壁,在自己了解基本原理后,参考了网上一位大侠的实例后,以下自己实现的数据双向绑定,绝对可以跑起来的。在此过程中自己也碰到了ReferenceError: Error #1056错误,根据自己的理解后给出了一个比较具有技巧的、实用的方法。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="absolute">
<mx:Script>
<![CDATA[
import cn.sloppy.User;
import mx.binding.utils.ChangeWatcher;
import mx.controls.Alert;
import cn.sloppy.TwoWayBinding;
[Bindable]
private var user:User;
private function init():void{
user = new User("wenxing");
TwoWayBinding.create(myText,"text",user,"Name");
}
private function showUserNameHandler():void{
Alert.show(user.Name);
user.Name = "hello world";
}
]]>
</mx:Script>
<mx:TextInput text="{user.Name}" id="myText" x="118" y="31"/>
<mx:Button x="118" y="77" click="showUserNameHandler()" label="Button"/>
</mx:Application>
package cn.sloppy
{
public class User
{
private var name:String;
public function User(pName:String)
{
name = pName;
}
[Bindable]
public function get Name():String
{
return name;
}
public function set Name(pName:String):void
{
name = pName;
}
}
}
package cn.sloppy
{
import flash.events.Event;
import mx.binding.utils.ChangeWatcher;
public class TwoWayBinding
{
public static function create(src1:Object, prop1:String, src2:Object, prop2:String):void
{
var flag:Boolean = false;
ChangeWatcher.watch(src1, prop1, function(event:Event):void
{
if(!flag)
{
flag = true;
src2[prop2] = src1[prop1];
flag = false;
}
});
ChangeWatcher.watch(src2, prop2, function(event:Event):void
{
if(!flag)
{
flag = true;
src1[prop1] = src2[prop2];
flag = false;
}
});
}
}
}
以上是实现数据双向绑定的代码;
User类是我自己写的,但在运行的时候就出现了ReferenceError: Error #1056: 无法为 cn.sloppy.User创建属性 name;
解决方法为TwoWayBinding.create(myText,"text",user,"Name"); "Name"第一个字母必须大写;
原理(本人的理解):因为我们只能通过user.Name去调用我们的getter方法,所有我们必须使用Name,这样也导致我们在定义类的私有属性是第一个字母必须小写不然也会报同样的错误。这是自己的理解哦 有意见请加QQ:305677472
分享到:
相关推荐
ReferenceError: AMap is not defined AMap未定义
Promise是es6语法里为了解决异步函数多重嵌套的问题(回调地狱) 说明: 或许你并不没有使用Promise,但是有可能你使用Axios等,其中原理也是Promise,进行了封装而已 解决办法: 步骤一: 安装 babel polyfill npm ...
错误信息:“ReferenceError:Error#1056:无法为创建属性:当使用 [RemoteClass(alias="XXX")],客户端与服务器端ValueObject映射时属性名不一致。” - **问题分析**:当客户端和服务器端的ValueObject属性命名不...
1. 之前稳定版开发工具用的好好的,突然某天真机调试一直报错: ReferenceError: define is not defined 2. 找解决办法后发现,更新至开发版最新版可以解决,如附件,下载安装后,即可解决该问题。
可能会遇到`execjs._exceptions.ProgramError`,比如`ReferenceError: document is not defined`或`ReferenceError: window is not defined`这样的错误。 这两个错误通常是因为`execjs`不提供完整的浏览器环境,它...
Uncaught ReferenceError: ReconnectingWebSocket is not defined; 说明缺少包资源,需引入reconnecting-websocket.js和reconnecting-websocket.minjs 创建WebSocket对象使用ReconnectingWebSocket 如下: var ws =...
8. **ReferenceError: Error #1056: 无法为...创建属性...** 当使用[RemoteClass(alias="XXX")]注解进行客户端与服务器端Value Object映射时,如果属性名称不一致,就会出现这个错误。确保客户端和服务器端的属性...
Uncaught ReferenceError: jQuery is not defined 具体报错后样式如下: 具体解决方竟然是修改JQuery的位置,必须在其他所有js的前面!! 错误的代码: 正确的代码: 只能说是自己没有基础了 正确后的样式 ...
在JavaScript编程中,`ReferenceError: $ is not defined` 是一个常见的错误,它通常发生在尝试使用jQuery库,但浏览器无法找到对应的 `$` 符号,即jQuery的核心函数没有被正确加载或引用。这个错误可能由多种原因...
这个项目的核心目标是提供一个纯JavaScript解决方案,允许用户在不依赖服务器的情况下,直接在客户端将音频数据转化为MP3格式。这对于需要实时音频处理和编码的应用,比如在线录音、音频编辑工具或者游戏等场景非常...
标题 "未捕获的ReferenceError:未定义ko" 指出的是在JavaScript环境中遇到的一个常见错误,即尝试引用一个尚未定义的变量或函数 `ko`。`ko` 在这里通常指的是Knockout.js,一个MVVM(Model-View-ViewModel)库,...
可以手动改文件引用,但是推荐以下解决办法: 找到build→webpack.prod.conf.js→找到HtmlWebpackPlugin插件,添加如下配置即可 chunks: ['manifest', 'vendor', 'app'] 以上这篇解决vue项目报错webpackJsonp is
错误NameError: name ‘xxx’ is not defined总结情况一:要加双引号(” “)或者(’ ‘)而没加情况二:字符缩进格式的问题情况三:`if __name__==’__main__’ :` 没有和`class类`进行对齐情况四:NameError: ...
Uncaught ReferenceError: layer is not defined 解决方法,查看网上说名,是非独立版导致直接使用layer导致,只需要在使用时加一说明,申明一下使用。 layui.use(['element','layer'], function(){ var element =...
[Vue warn]: Error in v-on handler: “ReferenceError: Toast is not defined” 解决方法: handleClick(){ this.$toast('点击提示') } 补充知识:vue+vant移动端遇到的那些问题 1、项目引用了lib-flexible 跟px...
### Environment variable ORACLE_UNQNAME not defined 错误解决 在Oracle数据库管理及维护过程中,可能会遇到“Environment variable ORACLE_UNQNAME not defined”这样的错误提示。本文将围绕这一问题展开详细...
,控制台总是会出现各种bug,其实不用慌张,终结起来也就几种类型的错误,在开发中每次遇到错误都善于总结,下次在看到就会胸有成竹知道是什么情况了,以下是在开发过程中总结的一些错误以及错误的解决方法。...
3. **加载顺序**:确保在Vue组件渲染完成后再加载Luckysheet,避免因DOM未准备好导致的错误。 4. **版本兼容性**:检查Luckysheet的版本是否与你的Vue项目或其他依赖库兼容。 关于Luckysheet-master压缩包中的内容...