Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs指令编译_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs指令编译

Angularjs指令编译,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我的指令没有正确插入html。我想我需要在插入html之前编译它,但我不确定该怎么做。我的模板第一次工作正常,但是当它被替换时,ng-click()事件没有注册,html作为正常的锚标记响应 如果有人能提供最佳实践帮助,也许还有一种更简洁的方式来写这篇文章。我只是在替换的签出文本上使用openSigninDialog()事件进行测试 指示 app.directive('navbarright', function() { return { restrict: "A", tem

我的指令没有正确插入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>");
      });
    }
  }
});
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;
};

});