Я хочу знать, как я могу вручную получить атрибут из обратного вызова linkFn.
например. если я хочу сферу, я,
angular.element(element).scope()
контроллер
angular.element(element).controller('ngModel')
как насчет для ATTR.
Я хочу знать, как я могу вручную получить атрибут из обратного вызова linkFn.
например. если я хочу сферу, я,
angular.element(element).scope()
контроллер
angular.element(element).controller('ngModel')
как насчет для ATTR.
В родительском контроллере я полагаю, вы можете получить доступ к атрибутам объекта после первого присвоения его свойству область в директиве:
<div ng-controller="MyCtrl">
<div my-directive attr1="one">see console log</div>
</div>
app.directive('myDirective', function() {
return {
link: function(scope, element, attrs) {
scope.attrs = attrs
},
}
});
function MyCtrl($scope, $timeout) {
$timeout(function() {
console.log($scope.attrs);
}, 1000);
}
У меня нет моей точки здесь, мне было интересно, можно ли найти attr субэлементов с помощью selector.attributes, вы решаете конкретную проблему. но спасибо за предоставленную мне информацию, я думаю, что я хочу почти невозможно – user2167582
Вы должны использовать свойство 'scope' определения директивы, чтобы автоматически привязать к области нужные вам атрибуты. 1), это его цель. 2) чем больше вы добавляете в сферу действия, тем тяжелее становится цикл дайджеста. Не нужно добавлять все attrs, если вы заботитесь только о некоторых избранных. 3) вам не понадобится '$ timeout', потому что вы будете сглаживать исполнение, просто используя свойство' scope' – JAAulde
Используйте экземпляры $compile
и $rootScope
услуг, позвоните по телефону $digest
, затем получите доступ к attr
и attributes
:
/* template string */
var html = "<div>ID: {{$id}}</div>";
/* template element creation */
var template = angular.element(html);
/* compile instance */
var compiler = angular.injector(["ng"]).get("$compile");
/* rootScope instance */
var scope = angular.injector(["ng"]).get("$rootScope");
/* template compilation */
var linker = compiler(template)(scope);
/* digest cycling */
scope.$digest();
/* scope linking */
var result = linker(scope)[0];
/* attr method */
linker.attr("class");
/* attribute property */
result.attributes;
Список литературы
Функция ссылка уже имеет доступ к области видимости элемента в качестве первого параметра функции связующей, поэтому я не знаю, почему вам нужно будет 'angular.element (элемент) .scope() '. Доступ к атрибутам зависит от того, какой тип области действия определяет ваша директива (нет новой области действия, новой области действия, новой области выделения) и значения или значения атрибута содержат {{}} или нет. Просьба привести пример того, что вы пытаетесь сделать. –
Мне интересно, можно ли получить $ attr вне директивы, размещенной на этом элементе, в тех случаях, когда я могу захотеть воздействовать на родителя и вам нужно напрямую получить доступ или посмотреть его дочерний attr, не создавая дополнительной директивы просто для этого attr. – user2167582