如何调用“ng-src”中的函数

时间:2014-03-06 13:12:08

标签: angularjs

我需要能够调用一个函数来运行代码来动态检索图像的来源。以下代码段显示了我想要的示例:

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

我确信这必须简单,但我在ng-src documentation中找不到任何东西!还有人打过这个吗?

提前致谢!

指令(基于答案的示例)

其他人推荐了一个指令。我无法发布客户端代码,所以我写了一个简短的例子,说明了plunker(see here)中的内容。核心指令本身是:

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

我知道我在这里作为一个例子可能只是使用ng-src中的变量进行ng-repeat,但它作为指令看起来的一个例子就像有必要一样。

3 个答案:

答案 0 :(得分:87)

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

Fiddle

答案 1 :(得分:5)

是的,最后到达那里:

的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

答案 2 :(得分:0)

将myFunction作为参数传递给自定义指令会不会更好?这样,我们将两者分离,并且可以很容易地改变将来传入的函数。

<强> HTML

<body ng-app='testApp'>
    <div ng-controller='TestCtrl'>
        <img my-src callback='myFunction()' />
    </div>
</body>

<强> JS:

angular.module('testApp', [])
.controller('TestCtrl', function($scope) {
    $scope.myFunction = function() {
        return 'http://nodejs.org/images/roadshow-promo.png';
    }
})
.directive('mySrc', function() {
    return {
        restrict: 'A',
        scope: {
            callback: '&'
        },
        link: function ( scope, elem, attrs ) {
            elem.attr('src', scope.callback());
        }
    };
})

http://jsfiddle.net/GLS2a/