2015-08-11 2 views
0

У меня есть следующий код примерно. Как я могу получить доступ к 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-элементу в теле моей страницы.

+0

Может быть, лучше было бы поделиться тем, что манипуляции с DOM вы делаете, чтобы увидеть, если мы можем получить мой щелчок рабочего – GPicazo

+0

Первое, что нужно оценить, почему вы делаете это в первую очередь? Скорее всего, вам нужна директива, но не так много деталей. Почти никогда не нужно использовать 'onclick'. Пожалуйста, покажите свой ng-repeat, который не работает. Важно понимать, что ng-repeat создает дочернюю область для каждого элемента. – charlietfl

+0

Я отредактировал его, чтобы показать контент, который я генерирую в JS. – Burninrock24

ответ

1

myfunction не заявлен внутри scope. Может быть добавить ур MyFunction внутри как код ниже

var app = angular.module('main', ['ui.bootstrap', 'ngTable']).controller('x', 
function ($scope, $filter, $http, $q, ngTableParams, $window) { 
    $scope.myFunction = function(){ 
     some angular stuff 
    } 
} 
+0

Я внес изменения, и он все еще не работает. Ошибка консоли: невозможно прочитать свойство «myFunction» неопределенного. – Burninrock24

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