2016-08-22 2 views
-2

Я не могу получить доступ к элементам dom за пределами app.js, которые создаются директивой, что делать? пожалуйста, предложить лучший подход, так как я новичок в angularjsКак вызвать элементы внутри шаблона директивы извне?

app.directive('myMenu', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     template: ' <div class="sticky-wrapper"><div class="sticky-menu"> menu</div></div>' 
    }; 
}); 

JSFiddle Link

+0

Что вы пытаетесь с ними сделать? Элементы не будут присутствовать при выполнении этого javascript. Добавьте к вам вопрос о том, что вы пытаетесь сделать. Обычно у вас должно быть свойство функции «ссылка» этой директивы, которая управляет dom – jumpdart

+0

в моем фактическом проекте, директива создается для строки меню, мне нужна «липкая -wrapper "dom в моем main.js для инициализации липкой –

+0

Если вы хотите выполнить javascript на элементах dom, добавьте свойство ссылки с функцией, которая делает то, что вы хотите. Для определения директивы – jumpdart

ответ

1

Пытались ли вы с $(document).ready(function() {, как показано ниже:

http://jsfiddle.net/dwyu78Ln/4/

$(document).ready(function() { 
    var orgElementPos = $('.sticky-wrapper').offset(); 
    alert(orgElementPos.top); 
}) 
0

попробовать что-то вроде этого:

var app = angular.module('app',[]); 

app.directive('myMenu', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     template: ' <div class="sticky-wrapper"><div class="sticky-menu"> menu</div></div>', 
    link: function(element){ 
      var orgElementPos = $('.sticky-wrapper').offset().top; 
     alert(orgElementPos); 
    } 
    }; 
}); 
+0

, не зная, что конкретно вы пытаетесь сделать, это немного сложно, но обычно это то, что вы сделали бы. Также я предлагаю ознакомиться с угловым api по умолчанию, поэтому вам не нужно использовать jquery. – jumpdart

Смежные вопросы