2

Я пытаюсь сделать угловую директиву, которая отображает динамические URL-адреса контента на основе атрибута, помещенного в директиве. Пример:Пропускать строку в Angular директиву

Директива:

angular 
    .module('myModule') 
    .directive('myContent', directive); 

function directive() { 
    return { 
     replace: true, 
     templateUrl: function (elem, attrs) { 
      return attrs.contentUrl; 
     } 
    }; 
} 

HTML:

<div my-content content-url="url/to/my-content.html"></div> 

Однако то, что я хотел бы для атрибута content-url быть заполнен строкой из контроллера. Так скажем, контроллер использует «controllerAs» синтаксис с именем «дома», я хотел бы HTML следующим образом:

<div my-content content-url="{{home.myContent.url}}"></div> 

Однако в функции templateUrl в директивы, атрибут contentUrl посылается буквально как " {{home.myContent.url}}». Как я могу оценить это значение перед запуском функции templateUrl? Или, есть ли лучший способ иметь простой, динамический контент, доступный из директивы?

+0

Должно быть возможным adding'scope: {conentUrl: '='} 'к вашей функции директивы, и не оставляйте фигурные скобки, когда используете его в своем html. Затем вам нужно $ смотреть значение $ scope.contentUrl в директиве. В качестве альтернативы вы также можете использовать $ attr. $ Наблюдать в функции ссылок директивы, хотя у меня нет большого опыта в этом. Google - это вы друг :-) – cYrixmorten

+2

Похоже, вы пытаетесь воссоздать то, что угловой уже изначально связано с ng-include. Если вы не пытаетесь воссоздать его для учебных целей, я бы просто использовал ng-include. В противном случае, может быть, неплохая идея проверить исходный код, чтобы увидеть, как они это делают. –

ответ

0

Ответ обеспечивается @ crhistian-Рамирес:

Просто используйте нг-включают

<div ng-include="vm.myContent.url"></div> 

 Смежные вопросы

  • Нет связанных вопросов^_^