Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call a function in "ng-src"

Tags:

angularjs

I need to be able to call a function in order to run code to dynamically retrieve the source of an image. The following code snippet shows an example of what I want:

<!-- "myFunction" exists in the current scope -->
<img ng-src="myFunction()" />

I'm sure this has to be simple but I just can't find anything in the ng-src documentation! Anyone else ever hit this?

Thanks in advance!

The Directive (Example based on answers)

Others recommended a directive. I can't post client code so I wrote a short example of what that would could look like in plunker (see here). The core directive itself is:

app.directive("imageSource", function (){
  return { link: function (scope, element, attrs){
      element.attr("src", scope.imageUrlArray[attrs.imageSource]);
    }
  };
});

I know that what I have here as an example could probably just be done with the ng-repeat using the variable in an ng-src but it serves as an example of what a directive would look like if one were necessary.

like image 521
drew_w Avatar asked Mar 06 '14 13:03

drew_w


2 Answers

<img ng-src="{{myFunction()}}" />

Fiddle

like image 166
AlwaysALearner Avatar answered Nov 08 '22 23:11

AlwaysALearner


Right, got there in the end:

JavaScript:

 angular.module('MyApp', [])
    .controller('Ctrl2', function($scope) {
    })
    .directive('mySrc', function() {
        return {
        restrict: 'A',
        link: function ( scope, elem, attrs ) {
             //replace test with whatever myFunction() does
             elem.attr('src', 'test1');
        }
      };
    });

HTML:

<div ng-app="MyApp">
  <div ng-controller="Ctrl2">
      <img my-src />
  </div>
</div>

Fiddle

like image 25
Liam Avatar answered Nov 08 '22 22:11

Liam