NData BUG 记录
一、collection
如果设计如下页面
页面模型如下
using UnityEngine;
using System.Collections;
using System.Collections.Generic; using MyUtils; public class Product : EZData.Context
{
#region Property Name
#endregion #region Property Price
#endregion #region Property Model
#endregion #region Property PicUrl
#endregion #region Property Pic //Texture2D
#endregion public void SetTexture2D(Texture2D tar) {
Pic = tar;
} //set current product
public void SetCurrentProduct() {
Messenger.Broadcast<Product>(EventSignal.Select_Current_Product.ToString(), this);
}
} public class CommodityPage<T> : EZData.Context
where T : EZData.Context
{
//列的集合
#region Collection Page
#endregion
} public class Category<T> : EZData.Context
where T : EZData.Context
{
//row list
#region Collection Table
#endregion #region Property Name
#endregion public void LoadTable(T[] Array, int PageNum)
{
}
} public class CategroyUi : EZData.Context
{
#region Collection CategoryList
#endregion #region Property NowSelectProduct
#endregion public ICategory_Product_Dao Ca_Pr_dao; public CategroyUi(ICategory_Product_Dao Ca_Pr_dao)
{
this.Ca_Pr_dao = Ca_Pr_dao; List<CategoryBean> mycategorylist = Ca_Pr_dao.getAllCategory(); foreach (CategoryBean item in mycategorylist)
{
CategoryList.Add(new Category<Product>() { Name = item.Name });
} for (int i = ; i < mycategorylist.Count; i++)
{
List<ProductBean> collection = Ca_Pr_dao.getProductListByCategoryId(mycategorylist[i].Id); Product[] Product_collection = GetArray(collection); CategoryList.GetItem(i).LoadTable(Product_collection, );
} //使用ngui master path
//path = CategoryList.SelectedItem.Table.SelectedItem.Page.SelectedItem
//这样形式是不可以的,只有CategoryList.SelectedItem 是可以使用的 //这里千万不要这么引用
//比如这里引用第一行第一个的数据
//之后你改为第一行第二个的数据
//NowSelectProduct 引用的是第一行第一个 那么第一行第一个的数据也改为第一行第二个
//NowSelectProduct = CategoryList.GetItem(0).Table.GetItem(0).Page.GetItem(0); //新new 一个 不要引用相同的
//一定要对其最开始就进行初始化 之后改变这个类的属性 不能改变这个类的引用
Product tmp = CategoryList.GetItem().Table.GetItem().Page.GetItem();
NowSelectProduct = new Product() { Name = tmp.Name, Price = tmp.Price, Model = tmp.Model, PicUrl = tmp.PicUrl };
Ca_Pr_dao.GetPicureByProductNameOrUrl(NowSelectProduct.Name, NowSelectProduct.PicUrl, NowSelectProduct.SetTexture2D); //监听当前选择的改变
Messenger.AddListener<Product>(
EventSignal.Select_Current_Product.ToString(), SelectCurrentProduct);
} public void SelectCurrentProduct(Product cur)
{
//这里不能改引用 只能赋值
NowSelectProduct.Name = cur.Name;
NowSelectProduct.Price = cur.Price;
NowSelectProduct.Model = cur.Model;
NowSelectProduct.PicUrl = cur.PicUrl;
UnityEngine.Debug.Log("SelectCurrentProduct" + NowSelectProduct.Name);
Ca_Pr_dao.GetPicureByProductNameOrUrl(NowSelectProduct.Name, NowSelectProduct.PicUrl, NowSelectProduct.SetTexture2D);
} #region 功能函数
Product[] GetArray(List<ProductBean> collection)
{
int length = collection.Count; Product[] result = new Product[length];
for (int i = ; i < length; i++)
{
ProductBean tmp = collection[i];
result[i] = new Product() { Name = tmp.Name, Price = tmp.Price, Model = tmp.Size, PicUrl = tmp.PicUrl};
Ca_Pr_dao.GetPicureByProductNameOrUrl(result[i].Name, result[i].PicUrl, result[i].SetTexture2D);
}
return result;
}
#endregion
} public class CategoryViewModel : MonoBehaviour
{
public NguiRootContext View; public CategroyUi Context; public void Init(NguiRootContext View)
{
this.View = View;
Context = new CategroyUi(new CategoryModel());
View.SetContext(Context);
}
}
2、关于NguiTextBinding
拖一个输入框如下:
Control - Simple Input Field
-》 Label
附加脚本如下:
Control - Simple Input Field
Label
ViewModel 对应如下:
#region Property MessageLeave
private readonly EZData.Property<string> _privateMessageLeaveProperty
= new EZData.Property<string>();
public EZData.Property<string> MessageLeaveProperty
{ get { return _privateMessageLeaveProperty; } }
public string MessageLeave
{
get { return MessageLeaveProperty.GetValue(); }
set { MessageLeaveProperty.SetValue(value); }
}
#endregion public void SendMessage() {
Debuger.Log("LeaveMessage is :"+ MessageLeave);
}
void SendMessage() 绑定一个按钮,MessageLeave 绑定刚才的label,按钮点击,结果如下
但如果只保留label:
附加脚本如下:
同样的ViewModel,结果如下
可以得到绑定,无语了,这个BUG。还有我建议Text CommitBind 能不用就不用。
三、NguiTextureBinding
这里要修改一下,如果采用material的话,那么同一个材质的图片都是一样的了。
NData BUG 记录的更多相关文章
- 【bug记录】OS Lab3 踩坑记
OS Lab3 踩坑记 Lab3在之前Lab2的基础上,增加了进程建立.调度和中断异常处理.其中测试包括进程建立以及进程调度部分. 由于是第一次做bug记录,而且是调试完bug后再做的记录,所以导致记 ...
- 微信小程序bug记录与解决
微信小程序bug记录 textarea textarea在模拟器上没有padding,可是在真机上会自带padding,而且在外部改不了,并且在安卓和IOS上padding还不一样 第一张图是在开发工 ...
- BUG 记录:移位运算与扩展欧几里得算法
BUG 记录:移位运算与扩展欧几里得算法 起因 上个月就开始打算用C++写一个ECC的轮子(为什么?折磨自己呗!),奈何自己水平有点差,拖到现在才算写完底层的大数运算.在实现欧几里得算法的时候,我开始 ...
- ArcGIS 10.1 BUG记录
声明:笔者使用ARCGIS 10.1 XXX版,YYY版可能没有此处描写的问题 1. 关于注册数据库 发布启用FA的服务,需要为数据库进行ArcGIS Server注册,若通过ArcMap执行注册,会 ...
- 前端bug记录---不定时更新
在项目的开发中难免遇到各种各样的bug,我觉得还是有必要记录一下的,方便日后查询. safari window resize 为满足日常轮播需求,做一个符合当前业务的轮播插件,其中需要考虑windo ...
- bug记录-setTimeout、setInterval之IOS7
本篇文章主要讲查找并分析bug的思路,相关的函数不是本文的重点. 众所周知,setTimeout和setInterval是用来做延迟调用以及周期性调用的方法,他们支持的参数都差不多. setTimeo ...
- CDH:5.14.0 中 Hive BUG记录
CDH5.14.0使用的HIVE版本: 自建表log: +----------------------------------------------------+--+ | createtab_st ...
- 【bug记录】OS Lab4 踩坑记
OS Lab4 踩坑记 Lab4在之前Lab3的基础上,增加了系统调用,难度增加了很多.而且加上注释不详细,开玩笑的指导书,自己做起来困难较大.也遇到了大大小小的bug,调试了一整天. 本文记录笔者在 ...
- 前端bug记录
记录一下前端入门时期遇到的一些bug. 1.同步.异步问题 背景:Javascript语言的执行环境是单线程.即一次只能完成一个任务.若有多个任务则需排队逐个执行——前一个任务完成,再执行后一个任务. ...
随机推荐
- 19款绚丽实用的jQuery/CSS3侧边栏菜单
jQuery作为一款主流的JavaScript前端开发框架,深受广告开发者的亲睐,同时jQuery有着不计其数的插件,特别是菜单插件更为丰富,本文将要为大家介绍20个绚丽而实用的jQuery侧边栏菜单 ...
- C#工具介绍
VisualStudio是微软的官方提供的.NET开发工具. 除了VisualStudio外,还有一些开源的.NET开发IDE. MonoDevelop.SharpDevelop等. 开发未必需要使用 ...
- OpenSSL 安全漏洞: heartbleed
Heartbleed 是 2014年4月7日被广泛报道的一个 OpenSSL 安全漏洞,号称是灾难. 利用它能读取服务器上最多64k的内存,只要该服务器可以通过ssl连接. Heartbleed ...
- phpStudy 2016 更新下载,新版支持php7.0
目标:让天下没有难配的php环境. phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 『软件简介』该程序包集成 ...
- lower_bound和upper_bound
lower_bound:返回大于或等于val的第一个元素位置 upper_bound:返回大于val的第一个元素位置 两个函数用的都是二分查找
- rsync参数详解、利用ssh、rsync 实现数据的定时同步
rsync 简介 rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文 件.也可以使用 rsync 同步本
- Python-Day5 常用模块学习
一.模块介绍 通俗点说,就是把常用的一些功能单独放置到一个.py文件中,方便其他文件来调用,这样的一个文件可以称为一个模块. 模块分为三种: 自定义模块 内置标准模块(又称标准库) 开源模块 二.导入 ...
- 使用virtualenv或zc.buildout创建Python-tornado分离环境
originally created by shuliang under CC BY-NC-ND 3.0 license 一.引言 学习编程,好比练功,总得先有个环境,搭台子是必须的.为了照顾初学者, ...
- 编写php拓展实例--slime项目(用户登录会话类)
最近公司换了yaf框架,突然对用c实现php拓展感兴趣了,如果一个功能已经很稳定很成熟而且用的地方很多,那么我们就可以尝试用拓展实现(不一定每种情况都可以写成拓展),写成拓展后就不用每次用都包含一 ...
- WPF编译时提示“...不包含适合于入口点的静态‘Main’方法 ...”
今天看了一下wpf的Application类方面的知识,一个windows应用程序由一个Application类的实例表示,该类跟踪在应用程序中打开的所有窗口,决定何时关闭应用程序(属性 Shutdo ...