Директива AngularJS не будет вызывать ссылку после компиляции и вставки в DOM - PullRequest
0 голосов
/ 10 января 2019

По какой-то причине данные об объекте myScope не передаются и не обрабатываются. Директива вставляется корректно через append (появляется статический html из шаблона), но это похоже на то, что дайджест не выполнил цикл. Я ожидаю, что будет вызвана функция связи, а это не так.

Я пытался запустить $ apply в течение $ timeout после вставки.

    .directive("slHyperlinkSelector", function () {
        return {
          templateUrl: "slHyperlinkSelector.html",
          restrict: "E",
          scope: {
              data: "=",
          },
          link: function (scope) {
              console.error('Is called');
          }
        };
    });

    $scope.$on('replaceView', function (event, builder) {

      var element = $element.find(".sl-account-canvas").children();
      var appendEl = builder(function () {

        $scope.maintain = false;
      });
      $scope.maintain = true;
      element.parent().append(appendEl);
      $timeout(function () {
        $scope.$apply();
      });
    });

    $rootScope.$broadcast('replaceView', function (closer) {

        var myScope = scope.$new(true);
        var destroy = function() {
          closer();
          myScope.$destroy();
        };

        myScope.data = {
          links: scope.formerNinos
            .map(function (formerNino) {

              return {
                textContent: formerNino.nino,
                onClick: function () { alert(formerNino.nino); destroy(); }
              };
            })
        };

       return $compile('<sl-hyperlink-selector data="data"></sl-hyperlink-selector>')(myScope);
     });


    (Template file below)

    <h2>Former National Insurance Numbers</h2>
    <ul class="sl-primary-card">
      <li ng-repeat="link in data.links">
        <h4><a href ng-click="link.onClick()">{{ link.textContent }}</a> 
   </h4>
      </li>
    </ul>

Я ожидаю, что директива отобразит несколько ссылок.

...