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, время: 08:46. |