Ui.router из директивы
Добрый день.
в приложении создал конфиг: angular.module("LiamoApp", ["ui.router"]) .config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) { $locationProvider.html5Mode(true).hashPrefix('#'); var UseURL = '/promadis'; $urlRouterProvider.otherwise(UseURL+"/"); // Now set up the states $stateProvider .state('index', { url: "/", templateUrl: UseURL + "index/index.html" }) .state('offers', { url: "/offers", templateUrl: UseURL + "offers/index.html" }) }]) Суть проблемы в том, что если я в шаблоне index.html делаю ссылку <a ui-sref="offers">Catalog</a>, то она работает, а если я в index.html делаю директиву и с помощью append добавляю ссылку, то она не работает, не кликабельна. Сама директива .directive("offersList", function() { return function(scope, element, attributes) { e = angular.element('<a ui-sref="offers">Catalog</a>'); element.append(e); } }); |
angular.element является оберткой для jq light. Есть мнение что таким образом вставленная ссылка не является частью приложения.
Суть эффекта в том, что если с помощью ajax запроса(через jq например) получить с бэка некий html и просто вставить его DOM, то ангуляр ничего о нем не знает. Что бы он начал обрабатываться этот html нужно предварительно скомпилить с текущим scope. Пример http://odetocode.com/blogs/scott/arc...n-angular.aspx |
Цитата:
e = '<a ui-sref="offers">Catalog1</a>'; var content = $compile(e)(scope); element.append(content); Сработало. Спасибо большое. |
Цитата:
|
Цитата:
Я что-то делаю не так? Делаю директиву, которая выводит каталог предложений. |
Вот тут погляди примеры https://habrahabr.ru/post/200620/
Я имею в виду то, что необходимости в использовании $compile в подавляющем числе случаев не требуется, как и в использовании compile,link (ты их увидишь в примерах) |
Часовой пояс GMT +3, время: 22:56. |