Ok. I solved my own problem, so here is the solution for the records.
The key point is to have the model items fire bubbling events (the simplest is 
to include the qx.data.marshal.MEventBubbling mixin, and call 
_applyEventPropagation on property changes). Then the list will be notified of 
item property changes and render accordingly without any other action needed. 
Great design ;-)

HTH,
Vincent


Le 20 janv. 2014 à 21:46, Vincent Vandenschrick <[email protected]> a écrit :

> Digging a little bit more, I discovered that this approach cannot work since 
> when rendering the list, the same renderer instance is re-used and cloned for 
> each list item. So I cannot get any handle on the widget actually drawn on 
> the screen. So what would be the correct design to have the list reflecting 
> the model changes ?
> 
> Le 20 janv. 2014 à 21:32, Vincent Vandenschrick <[email protected]> a écrit :
> 
>> Hi again,
>> So I built a small example simulating the problem with the list renderers 
>> not being repainted. In this example, a button listener directly changes one 
>> of the renderer title but nothing get changed on screen; of course, in 
>> real-life, the renderer should be notified of the model change, but for the 
>> sake of simplicity…
>> I’m sure I must be missing something but I can’t figure out. Here is the 
>> playground test-case :
>> 
>> http://tinyurl.com/pqzzd53
>> 
>> Any hint? Shall I open a bug report ?
>> 
>> Thanks in advance,
>> Vincent
>> 
>> 
>> Le 18 janv. 2014 à 15:34, Vincent Vandenschrick <[email protected]> a écrit 
>> :
>> 
>>> Hi experts,
>>> 
>>> Still experimenting the mobile API, and now, I face a strange problem. To 
>>> sum-up, I have 2 pages, 1 with a list of items and the second one that 
>>> allows to edit the 1st page selected item. Edition changes the item 
>>> property that is used for list rendering on the first page. The problem is 
>>> that, whatever I try, I cannot manage to get the list items updated 
>>> accordingly to the 2nd page edition.
>>> 
>>> Everything is MVC oriented through qooxdoo databinding. Since there is no 
>>> mobile List controller, I had to use an object controller on the model item 
>>> so that I can bind the renderer property to the model item property. This 
>>> is called in configureItem of the List widget constructor and here is 
>>> basically what it looks like :
>>> 
>>>  bindListItem: function (item, state) {
>>>    var modelController = new qx.data.controller.Object(state);
>>>    modelController.addTarget(item, "title", "value");
>>>    modelController.addTarget(item, "subtitle", "description");
>>>    modelController.addTarget(item, "image", "iconImageUrl");
>>>  }
>>> 
>>> When debugging, I can see the setTitle() method of the Default list 
>>> renderer being called as expected. However, when I come back to the list 
>>> page, Nothing has changed and the old value is still there. It may be 
>>> linked to the fact that the list is not visible when the setTitle() method 
>>> is called but I really have no clue.
>>> 
>>> Am I missing something ?
>>> 
>>> Thanks in advance for any hint.
>>> 
>>> Regards,
>>> Vincent
>> 
> 


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to