[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: linked variable
- From: "wang xu" <xu4wang@...>
- Date: Fri, 1 Dec 2006 17:15:44 +0800
Yeah..It's possible for the View to use the data inside the model.
I guess I have to use the method Rici pointed out. A.K.A using a table to hold a string.
Both the Model and the View are in Lua.
2006/12/1, askok@dnainternet.net <
askok@dnainternet.net>:
Shouldn't the Text View be using the Model, instead of
caching the strings?
Are the View & Model made in C(++) or in Lua?
On Fri, 1 Dec 2006 15:24:51 +0800
"wang xu" <
xu4wang@gmail.com> wrote:
> Hi Rici,
>
> Thanks for the reply!
>
> See my comments below.
>
>
> 2006/12/1, Rici Lake <
lua@ricilake.net
>:
>>
>>
>> On 1-Dec-06, at 12:31 AM, wang xu wrote:
>>
>> > Is there a generic way to automatically update one
>>variable when the
>> > value of another variable is changed?
>>
>> No. (And why do you want to do that?)
>
>
>
> I have a View, the view is a Text Widget, which has an
>attribute "str", when
> the str is modified, the Text widget will update the
>Screen with the string.
>
> I also have a Model, which is a table containing many
>strings, each string
> is corresponding to one Text Widget.
>
> What I want to do by a linked variable are:
> 1) when a string in the model changes, the str in the
>view update
> automatically.
> 2) when the str in the Text Widget changes(by the user
>through GUI), the
> sting in the Model table update automatically too.
>
> The closest you can do is to implement your own "boxed"
>values, using
>> tables with a single key (say, 1):
>>
>> val1 = {"a"}
>> val2 = val1
>> val1[1] = "b"
>> =val2[1]
>>
>> You could dress it up in O-O notation:
>>
>> do
>> local meta = {}
>> meta.__index = meta
>> function meta:set(v) self[1] = v end
>> function meta:get() return self[1] end
>>
>> function Box(v)
>> return setmetatable({v}, meta)
>> end
>> end
>>
>> val1 = Box("a")
>> val2 = val1
>> =val2:get()
>> val1:set("b")
>> =val2:get()
>>
>>
> Yeah. that's a way. but I need to change my model and
>widget
> implementation...
>
> I came from the TCL world, and there is a tracevar can
>do this, so I'm
> wondering if Lua has similar functionality..