Чистейший способом было бы использовать transclude
параметр в функции link
директивы, как указано here (Transclusions and Scopes by Jesus Rodriguez.
фрагмента взят из источника:
.directive('person', function() {
return {
restrict: 'EA',
scope: {
header: '='
},
transclude:true,
link: function(scope, element, attrs, ctrl, transclude) {
scope.person = {
name: 'Directive Joe',
profession: 'Scope guy'
};
scope.header = 'Directive\'s header';
transclude(scope, function(clone, scope) {
element.append(clone);
});
}
};
});
функция transclude принимает функцию и необязательный первый параметр. Что делает эта функция, так это клонировать транквилированный html, а затем вы можете делать с ним то, что хотите. Если вы поместите область видимости в качестве первого параметра, эта область будет использоваться для клонированного элемента. Функция обратного вызова transclude получит клонированную DOM, а также область, прикрепленную к ней.
В этом случае мы используем родительскую область директивы (в данном случае один контроллер) как область транскодированного html, а затем мы получаем ее в функции обратного вызова. Что мы делаем здесь, просто добавим его в элемент DOM нашей директивы. В случае мы имели шаблон на директивы, мы могли бы извлечь DOM элемент, а затем использовать его для добавления HTML включены через, то есть то, что я называю полный контроль :)
Также transclude
г элементы добавляются к директива, наследующая родительский $scope
вместо директивы. Более подробную информацию можно найти here
Я попытался воспроизвести мою проблему простейшим способом. Я прошу прощения за то. Что, если, например, я должен был передать '' 'dis.obj''' директиву, потому что это API для некоторых методов? – srph