У меня есть следующий код примерно. Как я могу получить доступ к myFunction() вне углового кода? Помощь очень ценится. ng-click не работает с манипуляциями DOM, которые я делаю, но ng-repeat работает не так, как хотелось бы. Я могу получать события onclick для работы в сгенерированном контенте.Ссылка на угловую функцию за пределами видимости
var app = angular.module('main', ['ui.bootstrap', 'ngTable']).controller('x', function ($scope, $filter, $http, $q, ngTableParams, $window) {
var myFunction = function(){
some angular stuff
}
}
//javascript
function testFunction(){
angular.element(document.getElementById('x')).scope().myFunction();
}
Вышеуказанный код - это то, что я нашел из поиска и не работает, как хотелось бы. Предоставление ошибки в консоли: невозможно прочитать свойство «myFunction» undefined
Редактировать: Вот манипуляция DOM, которую я делаю ... myFunction имеет id как аргумент, передаваемый в моей фактической реализации.
usersArray[] //populated object array with name and id
$scope.generateUsers = function(){
for(var i = 0; i < usersArray.length; i++){
document.getElementById("container").innerHTML += "<div ng-click='myFunction(" + usersArray[i].id + ")'> usersArray[i].name + "</div><br />";
}
}
РЕШЕНИЕ:
в яваскрипте функции, если я изменил свой код:
function testFunction(supUserId) {
angular.element(document.getElementById('HTMLElementId')).scope().myFunction();
}
Изменение элемента из контроллера (х в моем случае) к HTML-элементу в теле моей страницы.
Может быть, лучше было бы поделиться тем, что манипуляции с DOM вы делаете, чтобы увидеть, если мы можем получить мой щелчок рабочего – GPicazo
Первое, что нужно оценить, почему вы делаете это в первую очередь? Скорее всего, вам нужна директива, но не так много деталей. Почти никогда не нужно использовать 'onclick'. Пожалуйста, покажите свой ng-repeat, который не работает. Важно понимать, что ng-repeat создает дочернюю область для каждого элемента. – charlietfl
Я отредактировал его, чтобы показать контент, который я генерирую в JS. – Burninrock24