Я очень новичок в Angular JS и пользовательском интерфейсе Kendo. Я пытаюсь открыть всплывающее окно из шаблона столбцов таблицы Kendo UI. Сетка находится в директиве AngularJs.
<a href='javascript:changeShow()' class='link'>#=dataType#</a>
Я не получаю функцию. Моя функция определена в области контроллера.
var changeShow = function() {
console.log('changeShow');
};
Я немного смущен вашим вопросом, но я предполагаю, что вы хотите вызвать функцию из своего пользовательского определения шаблона.
Например:
"#= <a ng-click="openTheWindow()">Click to open the window</a> #"
Область действия шаблона - это не угловая область действия вашего виджета (к сожалению).
Если вы поместите функцию, которую хотите вызвать из своего шаблона, в глобальное пространство, шаблон сможет ее вызвать. Очевидно, что это не доставляет желаемую инкапсуляцию и загрязняет глобальное пространство имен. Я применил закрытие утилиты в глобальной области для всех пользовательских функций форматирования, которые я хотел использовать в своих шаблонах, и указал их там.
Ссылка на ваше окно Kendo добавляется в область вашей директивы, например:
<kendo-window="myWindowReference">
Поскольку эта ссылка находится в области действия директивы, вам нужно получить область видимости, сделав внешний запрос на угловую структуру из вашей общедоступной функции полезности. Это будет выглядеть примерно так:
var angularScope = angular.$injector.get('nameOfDirective').scope();
Затем откройте окно следующим образом:
angularScope.myWindowReference.open();
(Синтаксис выше от верхней части головы, но должен указывать на правильное направление).
Мне жаль, что я не могу предложить более чистое решение, но у Kendo Angular есть свои причуды, и я не претендую на то, чтобы понимать их все отлично. Такой подход обеспечил нам рабочее решение.