如何使ui-router在自定义Angularjs指令中工作

时间:2017-04-29 18:23:42

标签: angularjs angularjs-directive angular-ui-router

我尝试使用自定义指令为我的应用程序创建导航树。现在我的指令(缩小)中有以下内容:

(function() {
  'use strict';

  angular
    .module('app.layout')
    .directive('cnNavTree', ['$log', '$state', cnNavTree]);

  function cnNavTree($log, $state) {
      var directive = {
        link: link,
        restrict: 'EA',
        templateUrl: 'app/layout/cn-nav-tree.html'
      };
      return directive;

    function link(scope, element, attrs) {
      scope.$on('stateChange', function (event, toState, fromState) {
        updateNavTree(event, toState, fromState)
      });

      function updateNavTree(event, toState, fromState) {
        element.html('<span class="color" ui-sref="app.twoWays">Report load</span>');
      }
    }
  }
})();

除了element.html 中的 ui-sref之外,一切正常,它无法正常工作,我无法进入 app.twoWays 状态。任何想法,我们如何解决问题?

提前致谢

1 个答案:

答案 0 :(得分:1)

由于DOM上有角度绑定。在将DOM注入DOM树之前,您必须compile具有当前范围的HTML元素。

//inject $compile before using it.
var compiledDOM = $compile('<span class="color" ui-sref="app.twoWays">Report load</span>')($scope);
element.append(compiledDOM);