Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2016, 15:21
Аспирант
Отправить личное сообщение для neon_tmn Посмотреть профиль Найти все сообщения от neon_tmn
 
Регистрация: 29.04.2010
Сообщений: 51

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);
        }
    });
Ответить с цитированием
  #2 (permalink)  
Старый 21.09.2016, 06:04
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

angular.element является оберткой для jq light. Есть мнение что таким образом вставленная ссылка не является частью приложения.

Суть эффекта в том, что если с помощью ajax запроса(через jq например) получить с бэка некий html и просто вставить его DOM, то ангуляр ничего о нем не знает. Что бы он начал обрабатываться этот html нужно предварительно скомпилить с текущим scope.
Пример http://odetocode.com/blogs/scott/arc...n-angular.aspx
Ответить с цитированием
  #3 (permalink)  
Старый 21.09.2016, 06:37
Аспирант
Отправить личное сообщение для neon_tmn Посмотреть профиль Найти все сообщения от neon_tmn
 
Регистрация: 29.04.2010
Сообщений: 51

Сообщение от krasovsky Посмотреть сообщение
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);


Сработало. Спасибо большое.

Последний раз редактировалось neon_tmn, 21.09.2016 в 07:21.
Ответить с цитированием
  #4 (permalink)  
Старый 21.09.2016, 09:37
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от neon_tmn
Сработало. Спасибо большое.
Пожалуйста, но яптибе не советовал вообще такими вещами заниматься в ангуляре, почитай о разработке директив
Ответить с цитированием
  #5 (permalink)  
Старый 22.09.2016, 12:08
Аспирант
Отправить личное сообщение для neon_tmn Посмотреть профиль Найти все сообщения от neon_tmn
 
Регистрация: 29.04.2010
Сообщений: 51

Сообщение от krasovsky Посмотреть сообщение
Пожалуйста, но яптибе не советовал вообще такими вещами заниматься в ангуляре, почитай о разработке директив
Смотрел лекции от IТVDN по ангуляру.
Я что-то делаю не так?
Делаю директиву, которая выводит каталог предложений.
Ответить с цитированием
  #6 (permalink)  
Старый 22.09.2016, 13:04
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Вот тут погляди примеры https://habrahabr.ru/post/200620/
Я имею в виду то, что необходимости в использовании $compile в подавляющем числе случаев не требуется, как и в использовании compile,link (ты их увидишь в примерах)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в директиве, получить доступ к input входящему в шаблон директивы? - AngularJS metaller92 Angular.js 3 17.02.2016 07:14
Директивы при ajax обновлении из вне Wizlight Angular.js 4 10.11.2015 16:20
автоматическое удаление скоупа директивы при удаление dom узла FanAizu Angular.js 0 25.08.2015 21:38
Многократное использование общей директивы desperado Angular.js 3 05.03.2015 11:39
Зачем нужно дублировать директивы (data-) slanter Angular.js 1 05.02.2015 13:34