По какой-то причине данные об объекте 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>
Я ожидаю, что директива отобразит несколько ссылок.