Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
100
rated 0 times [  105] [ 5]  / answers: 1 / hits: 18232  / 12 Years ago, sat, january 12, 2013, 12:00:00

I'm building a HTML-app with the AngularJS framework. I have some legacy JavaScript actions that needs to access a function within the Angular-object, and I can't get it to work.

This is the Angular-object (function I need to access is the $scope.info()):



function content($scope) {
$scope.info = function (id) {
console.log('Got a call from '+id);
$scope.text = Hello, +id;
};
}


I have attempted to access it through angular.element('content').scope().info('me'), but with no result (console says undefined). I attempted to dump the result of angular.element('content').scope(), and I got the full object list and everything. Theoretically, my first example should work, however it does not.



Any guidance as to how I can achieve this is much appreciated!

(PS: Call Angular JS from legacy code did not resolve this).






When I was finally able to access the function, it didn't work as expected – the value of $scope.text is technically modified, but the expressions used in the HTML are not updated! For example, <p>{{text}}</p>does not get updated after this function is called from an external function.



Is there any way to fix this?


More From » scope

 Answers
15

angular.element() expects a DOM element, so if you have this html:



<div ng-controller=content>
</div>


and you want to access its DOM element, use an id:



<div id=myDiv ng-controller=content>
</div>


Then



angular.element($('#myDiv')).scope().info('me')


or without jQuery:



angular.element(document.getElementById('myDiv')).scope().info('me')


should work.



Edit:



If you changed something on the scope, you will probably need to use $apply():



angular.element(document.getElementById('myDiv')).scope().$apply();

[#80911] Friday, January 11, 2013, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
rossthomasn

Total Points: 122
Total Questions: 78
Total Answers: 105

Location: South Georgia
Member since Sun, Aug 8, 2021
3 Years ago
rossthomasn questions
Wed, Mar 16, 22, 00:00, 2 Years ago
Wed, May 5, 21, 00:00, 3 Years ago
Thu, Nov 26, 20, 00:00, 4 Years ago
Sun, May 31, 20, 00:00, 4 Years ago
;