lua简单实现的数据绑定 实现参考了vue的原理
- 支持表达式自动引用
- 添加数组的原生修改 已知的bug: 在5.1版本的 “#” 运算符还无法支持
local data = {
aa = {1,2,3,4,5},
bb = 3,
1,2,3
}
-- Vue.new(数据对象, 表达式, 监听函数,附加项)
-- 表达式支持正常的lua语法。支持直接访问data数据和computed数据
-- 其中附加项中computed 支持在表达式中使用self进行调用
local vm = Vue.new(data, " self:sum() + bb" , function(value, oldValue)
print(value, oldValue)
end, {
computed = {
sum = function(self)
local ret = 0;
for _,v in ipairs(self.aa) do
ret = ret + v;
end
return ret;
end
}
})
-- 下面是测试数据绑定
print("-------------")
table.insert(data.aa, 10)
print("-------------")
data.bb = 2
print("-------------")
table.remove(data.aa)
print("-------------")
data.aa = {2,2,2}
print("-------------")
data.aa[4] = 3
输出:
18 nil
-------------
28 18
-------------
27 28
-------------
17 27
-------------
8 17
-------------
11 8
notifyPoint 基于数据绑定实现的通知系统。这里会和cocos2dx的节点有点耦合,但无关紧要