programing

ng-src에서 함수를 호출하는 방법

magicmemo 2023. 3. 17. 20:31
반응형

ng-src에서 함수를 호출하는 방법

이미지의 소스를 동적으로 불러오는 코드를 실행하려면 함수를 호출할 수 있어야 합니다.다음 코드 스니펫은 내가 원하는 것의 예를 보여줍니다.

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

간단해야 하는데 ng-src 문서에는 아무것도 없어요!누가 이걸 때린 적 있어?

잘 부탁드립니다!

지침(답변을 기반으로 한 예)

다른 이들은 지시를 권고했다.클라이언트 코드를 투고할 수 없기 때문에, 플런커로 표시되는 간단한 예를 작성했습니다(여기를 참조).핵심 지시문은 다음과 같습니다.

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

예를 들어 ng-src의 변수를 사용하여 ng-repeat을 수행할 수 있다는 것을 알고 있습니다만, 이것이 필요한 경우 지시문이 어떻게 표시되는지 보여주는 예입니다.

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

Fiddle

그래, 결국엔 거기까지 갔지

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>

만지작거리다

커스텀 디렉티브에 인수로서 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/

언급URL : https://stackoverflow.com/questions/22225609/how-to-call-a-function-in-ng-src

반응형