Проблемы с директивой
Здравствуйте!
Решил потренироваться с Angular. Задача, вроде бы простая, но что-то никак не выходит ее решить пока что. Итак: нужно сделать директиву для виджета, в которой в атрибуте path будет указываться путь до виджета. После этого templateUrl будет строиться динамически. Написал следующее определение директивы (в функции связывания для теста вывожу path): app.directive('widget', function($log) { widgetDirective = { restrict: 'E', replace: true, template: '<div>TEMPLATE</div>', scope: { path: '@path' }, link: function(scope, iElement, iAttrs, controller) { $log.log(scope.path); // для теста, посмотреть, что в scope } }; return widgetDirective; }); В HTML: <widget path="menu.widgets.MenuWidget"></widget> В результате в консоль выводится undefined. Но, если верить расширению AngularJS Batarang, то path содержит нужную строку с "menu.widgets.MenuWidget". + Если выводить в консоль не scope.path, а scope, то свойство path также содержит нужную строку. Из этого всего у меня три вопроса: 1. почему может быть такое, что при выводе scope.path в консоль мы получаем undefined, а при выводе scope свойство path содержит нужную строку? 2. как можно все-таки достучаться из кода до свойства path в scope (iAttrs.path возвращает нужное значение)? 3. этот вопрос больше по самому angular. Можно ли в нем динамически менять templateUrl? Т.е. через директиву виджета можно подключить различные виджеты с сервера, каждый из которых имеет свой адрес. И можно ли, например, в templateUrl использовать такую конструкцию: templateUrl: '/widget/{{path}}' ? Если я совсем не так все понял и есть реализация проще, то, прошу, тыкните меня носом в ошибки, чтобы больше такого не городил. Большое спасибо. |
|
nerv_,
Благодарю :) |
Часовой пояс GMT +3, время: 18:13. |