4

我正在对控制器进行单元测试,我想检查视图是否正确更新。视图的某些字段与控制器的字段/功能相关。当我尝试获取编译视图时,我无法使用他的构造函数将控制器链接到链接函数。我创建了一个plunker

function($rootScope, $scope, $compile, $timeout) {
  $scope.helloScope = 'Hi Scope';
  this.hello = 'Hello';
  this.sayFunction = function() {
    return 'Function';
  };
  var template =
    "<div>{{helloScope}} {{main.hello}} {{main.sayFunction()}}</div>";

  $scope.toCompile = template;
  var newScope = $rootScope.$new();
  //newScope.main = this; //if I uncomment this line, all works!
  newScope.helloScope = 'Hi Scope';
  var el = angular.element(template);
  var linkFn = $compile(el);
  var view = linkFn(newScope,
      undefined, {transcludeControllers:{'main':this}});
  $timeout(function() {
    $scope.compiled = view.html();   
  });
 }

它仅在我将主要属性添加到 newScope 时才有效,因此我想我没有正确使用 linkFn() 函数,但我无法找到任何有关它的文档或示例。

[编辑] 我在Angular文档中发现,linkFn 的第三个参数是“transcludeControllers - 一个对象散列,其键将控制器名称映射到控制器实例;如果给定,它将使控制器可用于指令。”,但它似乎不适合我

4

0 回答 0