2015-05-05 4 views
6

Ho il seguente codice che aggiunge html a una variabile. Tuttavia, quando viene visualizzato nella pagina, il collegamento non funziona.Angularjs aggiungendo html alla variabile con il collegamento ui-sref

Qual è il modo migliore per attivare un collegamento ui-sref quando lo si inserisce in modo dinamico?

JAVASCRIPT

.controller('page', function($scope, $rootScope, $http, $state, $sce) { 

    $scope.message = $sce.trustAsHtml('A <a ui-sref="login">login</a> link'); 

}) 

HTML

<div ng-bind-html="message"></div> 
+0

probabilmente dovranno usare '$ compile' -' $ sce.trustAsHtml ($ compilare ('A login link') ($ portata)); ' – tymeJV

+0

Perché stai cercando di aggiungere in modo dinamico? Non puoi semplicemente metterlo nel file template/html? – ajkavanagh

risposta

2

C'è a working plunker

direi, che possiamo usare combinazione di:

  • $state.href()(doc here) e
  • ng-href(doc here)

(ma solo nel caso in cui, se i params passati sono parte di URL)

Questo sarebbe il risultato

<a ng-href="{{$state.href(myStateName, myParams)}}"> 

E ora (in the plunker) possiamo cambiare myStateName in parent, parent.child, home e cambierà correttamente generato href:

<input ng-model="myStateName" /> 
<input ng-model="myParams.param" /> 

Perché questi sono stati in plunker

$stateProvider 
    .state('home', { 
     url: "/home", 
     ... 
    }) 
    .state('parent', { 
     url: "/parent?param", 
     ... 
    }) 
    .state('parent.child', { 
     url: "/child", 
     ... 

Assegno si here