qooxdoo: привязка данных к вложенным спискам

Я пытаюсь создать контроллер для пользовательского сложного объекта, но у меня есть некоторые проблемы с вложенным списком.

У меня есть хранилище данных json, которое получает следующую структуру данных:

var data = [
        {
          id: 1,
          name: 'check all links if they work',
          description: 'Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.',
          tags: ['a', 'b', 'c']
        },
        {
          id: 2,
          name: 'check all titles',
          description: 'Maecenas sed diam eget risus varius blandit sit amet non magna.',
          tags: ['a', 'b', 'c']
        },
        {
          id:3,
          name: 'check layout in all browsers',
          description: 'Maecenas sed diam eget risus varius blandit sit amet non magna.',
          tags: ['a', 'b', 'c']
        },
        {
          id:4,
          name: 'validation if videos works fine',
          description: 'Maecenas sed diam eget risus varius blandit sit amet non magna.',
          tags: ['a', 'b', 'c']
        }
      ];

Что я хотел бы сделать: привязать этот список к списку пользовательского интерфейса с пользовательскими элементами списка и привязать вложенный список «тегов» в качестве свойства к пользовательскому элементу управления пользовательского интерфейса, который отображает список тегов.

controllerCase.setDelegate({
        configureItem : function(item) {
        },
        createItem : function() {
          return new my.custom.Item();
        },
        bindItem : function(controller, item, id) {
          controller.bindProperty("", "model", null, item, id);
          controller.bindProperty("name", "name", null, item, id);
          controller.bindProperty("description", "description", null, item, id);
        controller.bindProperty("tags", "tags", null, item, id);
      });

Я хотел бы связать свойство tags my.custom.Item со свойством tags в модели, но всегда получаю пустой массив.


person Serge Barysiuk    schedule 30.05.2011    source источник
comment
Хм, это странно, потому что bindProperty копирует только ссылки, поэтому ему все равно, массив это или нет. Как вы проверили, что это пустой массив? Обязательно используйте методы, предоставленные массивом данных, и не доверяйте консоли, потому что она может показать пустой массив (используйте .getItem(x), чтобы проверить это).   -  person Martin Wittemann    schedule 31.05.2011
comment
Мартин, вы абсолютно правы. Я вижу [] в консоли, но когда я пытаюсь получить доступ к элементу с помощью getItem(x), я вижу их. Итак, я заменил итерацию вызовами getItem, и все работает нормально. Спасибо.   -  person Serge Barysiuk    schedule 31.05.2011


Ответы (1)


Как предложил Мартин, следует использовать методы из класса массива данных. Смотрите комментарий под вопросом.

person Serge Barysiuk    schedule 07.06.2011