AngularJS — три зависимых выбора — заполняются только первые два

Я работаю с Express, Angular и Jade. Соответствующая часть приложения позволяет пользователю выбрать организацию, доску и список из своей учетной записи Trello. Три элемента образуют иерархию: организации содержат доски, а доски содержат списки.

Итак, в моем нефритовом частичном у меня есть следующее:

select(ng-model='userData.apps.trello.organization', ng-options='orgId as orgDetails.name for (orgId, orgDetails) in orgsandboards')
select(ng-model='userData.apps.trello.board', ng-options='boardId as boardDetails.name for (boardId, boardDetails) in orgsandboards[userData.apps.trello.organization]["boards"]')
select(ng-model='userData.apps.trello.list', ng-options='listId as listDetails.name for (listId, listDetails) in orgsandboards[userData.apps.trello.organization][userData.apps.trello.board]["lists"]')

Между прочим, синтаксис для вышеизложенного взят из sour">этот полезный ответ.

Во всяком случае, структура данных, построенная по образцу приведенного выше ответа, выглядит так:

orgsandboards: {
    orgid1: {
        name: "organization 1",
        boards: {
            boardid1: {
                name: "name of the first board",
                lists: {
                    listid1: {
                        name: "name of list 1"
                    },
                    listid2: {
                        name: "name of list 2"
                    }
                }
            },
            boardid2: {
                name: "name of the second board",
                lists: {
                    listid3: {
                        name: "name of list 3"
                    },
                    listid4: {
                        name: "name of list 4"
                    }
                }                
            }
        }
    },
    orgid2: {.. and so on ..}
}

Первые два выбора работают отлично. Если я меняю организацию, то меняется и список потенциальных советов. Однако третий выбор — списки — никогда не обновляется. Я проверил, что данные присутствуют и доступны.

Я просмотрел другие вопросы и ответы, в том числе это и это. Как это часто бывает здесь, ни один из них, кажется, не предлагает ответ, который я ищу.

Спасибо.


person Chris    schedule 08.04.2014    source источник


Ответы (1)


Похоже на то, что прощающая природа Angular маскирует ошибку. ng-options третьего списка должен заканчиваться на:

in orgsandboards[userData.apps.trello.organization]["boards"][userData.apps.trello.board]["lists"]

обратите внимание на часть ["boards"].

Как у вас сейчас, вы ссылаетесь на несуществующий ключ в orgsandboards[userData.apps.trello.organization], но Angular обычно не выдает ошибок в таких обстоятельствах — он просто молча терпит неудачу.

person sgress454    schedule 08.04.2014
comment
Я знаю, что это будет что-то простое. Благодарю вас! - person Chris; 08.04.2014