Невозможно использовать виджеты набора инструментов Dojo в приложении angularjs

Я пытаюсь использовать датчики Dojo в своем приложении angularjs; Я понимаю, что Dojo сам по себе является фреймворком, который предлагает MVC (например, angularjs), но на данный момент у меня есть приложение angularjs, и я хотел бы использовать существующие виджеты из других библиотек, используя директивы angularjs.

Я продолжаю получать эту ошибку, когда запускаю свой простой пример виджета — Uncaught TypeError: undefined is not a function — вот плунжер, который показывает проблему

http://plnkr.co/edit/Yzkp5r?p=preview

Я не уверен, где я ошибаюсь. Я запускаю его внутри dom ready, и когда происходит ошибка, похоже, что один из моих элементов div не имеет прототипа, установленного на HTMLDivElement, что странно. Я могу создать тот же датчик таким же образом из консоли Chrome, что предполагает, что я делаю что-то рано или что-то не готово в то время, когда создается мой виджет Dojo. Чтобы быть более конкретным, ошибка исходит от

var glossyCircular = new GlossyCircularGauge(
                                                        {
                                                            background: [255, 255, 255,    0],
                                                            title: 'Value',
                                                            id: gaugeId,
                                                            width: 150,
                                                            height: 150
                                                        },parent);

Любая помощь приветствуется.

Спасибо


person user2789284    schedule 01.09.2014    source источник
comment
plnkr не выглядит полным.   -  person RoryKoehein    schedule 01.09.2014
comment
Мои извинения - Допустил ошибку при разветвлении плункера - plnkr.co/edit/Yzkp5r?p=preview теперь работает   -  person user2789284    schedule 01.09.2014
comment
Я заметил, что у вас уже есть ответ, но я просто хотел сказать, что вы можете немного упростить свою директиву, используя элемент, который вы получаете в функции link(), и добавляя идентификатор в свою область: plnkr.co/edit/ILl51svqwsL03X761WMs?p=preview   -  person g00glen00b    schedule 02.09.2014
comment
Добрый день, Дмитрий! Большое Вам спасибо за это. Это было очень полезно. Не могли бы вы помочь мне понять, что означает область действия: {gaugeId: '@'}? Я вижу, что он привязал свойство области действия к идентификатору, но хотел получить больше ясности по этому поводу.   -  person user2789284    schedule 03.09.2014
comment
Он делает именно это: он получает атрибут из тега и устанавливает его в области действия, конечно же, преобразуя синтаксис с пунктиром в верблюжий регистр (поэтому 'gauge-id' становится GaugeId). См.: stackoverflow.com/questions/14050195/   -  person RoryKoehein    schedule 04.09.2014


Ответы (1)


Dojo Query возвращает список DOM, который вы передаете GlossyCircularGauge. Но вам нужно передать элемент, который в вашем случае будет parent[0]: http://plnkr.co/edit/Sj4madvp7Fj88VriUq23?p=preview

person RoryKoehein    schedule 01.09.2014