我需要能够调用一个函数来运行代码来动态检索图像的来源。以下代码段显示了我想要的示例:
<!-- "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,但它作为指令将看起来的一个例子就像有必要一样。
答案 0 :(得分:87)
<img ng-src="{{myFunction()}}" />
的 Fiddle 强>
答案 1 :(得分:5)
是的,最后到达那里:
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');
}
};
});
<div ng-app="MyApp">
<div ng-controller="Ctrl2">
<img my-src />
</div>
</div>
答案 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());
}
};
})