Использование контроллера псевдонимов в шаблонах для компиляции

Я тестирую модуль на контроллере и хочу проверить, правильно ли обновлено представление. Некоторые поля зрения связаны с полями / функциями контроллера. Когда я пытаюсь получить скомпилированное представление, я не могу связать контроллер с функцией связывания с его конструктором. Я создал поршень

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() должным образом, но я не смог найти никаких документов или примеров по этому поводу.

[edit] Я обнаружил в угловой документации, что третий параметр для linkFn - это "transcludeControllers - хеш объекта с ключами, которые отображают имена контроллеров в экземпляры контроллеров; если он задан, он сделает контроллеры доступными для директив.", но это кажется, не работает для меня

0 ответов

Другие вопросы по тегам