Angularjs指令编译
我的指令没有正确插入html。我想我需要在插入html之前编译它,但我不确定该怎么做。我的模板第一次工作正常,但是当它被替换时,ng-click()事件没有注册,html作为正常的锚标记响应 如果有人能提供最佳实践帮助,也许还有一种更简洁的方式来写这篇文章。我只是在替换的签出文本上使用openSigninDialog()事件进行测试 指示Angularjs指令编译,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我的指令没有正确插入html。我想我需要在插入html之前编译它,但我不确定该怎么做。我的模板第一次工作正常,但是当它被替换时,ng-click()事件没有注册,html作为正常的锚标记响应 如果有人能提供最佳实践帮助,也许还有一种更简洁的方式来写这篇文章。我只是在替换的签出文本上使用openSigninDialog()事件进行测试 指示 app.directive('navbarright', function() { return { restrict: "A", tem
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>");
});
}
}
});
HTML
我的想法是错误的。我最终使用了angularjs内置的ng show和ng hide指令
HTML
app.controller('NavbarRightCtrl', function($scope) {
console.log('signin event occuring');
$rootScope.$broadcast('event:auth-signinConfirmed');
});
<ul class="nav pull-right" ng-controller="NavbarRightCtrl" navbarright>
</ul>
<ul class="nav pull-right" ng-controller="NavbarRightCtrl">
<li><a href="#">New</a></li>
<li ng-hide="signedIn"><a href="" ng-click="signin()" ng-init="load()">Sign In</a></li>
<li ng-show="signedIn">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Bob <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="" ng-click="signout()">Sign Out</a></li>
</ul>
</li>
</ul>
app.controller('NavbarRightCtrl', function($scope, $rootScope) {
$scope.signin = function(){
console.log('signin event');
$rootScope.signedIn = true;
});
$scope.signout = function () {
console.log('signing out');
$rootScope.signedIn = false;
};
$scope.load = function () {
$rootScope.signedIn = false;
};
});