Pergunta

Quero substituir o comportamento de uma diretiva de biblioteca, chamada "ui-sref".Vejamos um exemplo:

<a ui-sref="edit" class="btn btn-small">
     <i class="icon-pencil"></i> Edit
 </a>

Agora, quero criar minha própria diretiva chamada, por exemplo, "ui-sref-anexado".O código ficará assim:

<a ui-sref-appended="edit" class="btn btn-small">
     <i class="icon-pencil"></i> Edit
 </a>

A saída que desejo deve ser:

<a ui-sref="user.edit" class="btn btn-small">
     <i class="icon-pencil"></i> Edit
 </a>

(e então obedeceu, então ui-sref poderia fazer seu trabalho)

Como posso implementar isso?O problema é que eu quero o meu a ter os mesmos atributos e conteúdo, mas mudou de ui-sref-appended="editar" para ui-sref="usuário.edit"

Foi útil?

Solução

Defina o modelo da sua nova diretiva da seguinte forma

 template : '<a ui-sref="user.edit" class="btn btn-small"> <i class="icon-pencil"</i> Edit</a>';

E defina user.edit na função de link ou passe o usuário para a diretiva por meio do membro do escopo.

Se você tiver um modelo dinâmico, poderá criar o modelo de diretiva na função de link.

 app.directive('newDirective', function ($compile) {
        return {

            restrict: 'A',
            link: function (scope, element, attrs) {
            var template= '<a ui-sref="user.edit" class="{{btnClass}}"> <i class="icon-pencil"</i> Edit </a>';
element.append($compile(template)(scope));
            },
            scope: {
                user: '=',
                btnClass: '@'
            }
        }
    });

EDITAR

Se você deseja apenas definir o ui-sref, basta adicionar o ui-sref como um atributo ao seu elemento e compilá-lo.

 app.directive('uiSrefAppended', function ($compile) {
        return { 
            restrict: 'A',
            link: function (scope, element, attrs) {
                element.attr('ui-sref', 'user.edit');
                $compile(element)(scope);
            },
            scope: {
                user: '='
            }
        }
    });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top