我的指令没有正确插入 html。我想我需要在插入 html 之前对其进行编译,但我不确定如何执行此操作。我的模板第一次工作正常,但是当它被替换时,ng-click() 事件没有注册,并且 html 响应为正常的锚标记。
如果有人可以帮助提供最佳实践,那么可能还有一种更简洁的方式来编写它,这将不胜感激。显然,我只是在替换的注销文本上使用 openSigninDialog() 事件来进行测试。
指示
app.directive('navbarright', function() {
return {
restrict: "A",
template: "<li><a href='#'>New</a></li>"+
"<li><a href='' ng-click='openSigninDialog()'>Sign In</a></li>",
link: function (scope, elem, attrs) {
scope.$on('event:auth-signinConfirmed', function() {
elem.html("<li><a href='#'>New</a></li>"+
"<li><a href='' ng-click='openSigninDialog()'>Sign Out</a></li>");
});
}
}
});
控制器
app.controller('NavbarRightCtrl', function($scope) {
console.log('signin event occuring');
$rootScope.$broadcast('event:auth-signinConfirmed');
});
HTML
<ul class="nav pull-right" ng-controller="NavbarRightCtrl" navbarright>
</ul>