programing

Angularjs가 ng-view 내에서 스크립트를 로드하지 않음

shortcode 2023. 2. 23. 23:23
반응형

Angularjs가 ng-view 내에서 스크립트를 로드하지 않음

뷰에 특화된 스크립트가 몇 개 있었어요.단, angularjs가 뷰를 로드하면 스크립트가 실행되지 않는 것 같습니다.

Index.html

<html>
  <body ng-app="adminApp">

    <div ng-view=""></div>

    <script src="bower_components/angular/angular.js"></script>
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>

</body>
</html>

Main.html - ng뷰 하의 부하

hello world
  <script>

    alert('Hello, John!')

  </script>

이 예에서는 페이지가 로드되면 웹 사이트에 기본 hello 월드가 인쇄되어 있습니다.하지만 "안녕하세요, 존"이라는 팝업은 뜨지 않습니다.

특정 뷰에 고유한 스크립트를 로드할 수 없는 이유를 알고 계십니까?


추가 정보 app.module

'use strict';

angular.module('adminApp', [])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  });

컨트롤러/main.display

'use strict';

angular.module('adminApp')
  .controller('MainCtrl', function ($scope) {
    $scope.awesomeThings = [
      'HTML5 Boilerplate',
      'AngularJS',
      'Karma'
    ];
  });

그게 바로 jqLite가 작동하는 방식입니다.템플릿의 스크립트를 평가하려면 AngularJS 앞에 jQuery를 포함합니다.jQuery가 포함된 경우 스크립트가 평가됩니다.jQuery를 삭제해 보면 원래 관찰된 동작을 볼 수 있습니다.

갱신: 코멘트에서 상세한 설명을 요구하는 사람도 있기 때문에, 이하에 나타냅니다.

루트가 일치하면ngViewjqLite 사용(로드된 경우 jQuery 사용)html()요소의 내용을 설정하는 방법(하나)ngView가 온으로 선언됩니다).바꿔 말하면ngView.link()는 다음과 같은 처리를 합니다.

$element.html(template)

결론부터 말하자면html()jqLite 및 jQuery로 구현됩니다.jqLite는 네이티브를 사용합니다.innerHTML속성 - 내용만 설정하고 스크립트는 평가하지 않습니다.jQuery는 (스크립트 DOM 요소를 생성하여 페이지에 추가함으로써) 모든 스크립트태그를 해석하여 실행합니다.

뷰와 함께 작업해야 하는 스크립트를 포함하면 뷰가 로드되었을 때 어떻게 트리거할 수 있습니까?jquery를 포함하거나 스크립트를 fragment화하고 싶지 않습니다.

를 실행하려면<script>jQuery를 로드하지 않고 태그를 지정하여 jqLite를 사용하여<script>태그하고 나서evalinnerHTML.

app.controller("vm", function($scope, $element) {

  //FIND script and eval 
  var js = $element.find("script")[0].innerHTML;
  eval(js);

});

PLNKR 데모

'각'도 참조JS 이슈 #369 - jqLite는 jQuery와 동일한 방법으로 요소를 생성해야 합니다.

언급URL : https://stackoverflow.com/questions/18220197/angularjs-does-not-load-scripts-within-ng-view

반응형