Angularjs代码未在匿名函数中运行

Angularjs code not running in anonymous function

本文关键字:函数 运行 代码 Angularjs      更新时间:2023-09-26

我编写了一个匿名javascript函数,它动态加载jQuery和Angular。然而,由于某种原因,我的角度代码没有运行。代码一直在find中工作,直到我达到main函数。然后,我尝试发出http请求,并在我的角度控制器中打印结果,但由于某种原因,它们无法打印。。有人能帮忙吗?这是我的小提琴和代码:

https://jsfiddle.net/5f44yb7k/1/

提前感谢!

(function() {
  var jQuery;
  var jquery_tag = document.createElement('script');
  var angular_tag = document.createElement('script');
  function getJqueryTag() {
     console.log('getting jquery tag');
     jquery_tag.setAttribute("type","text/javascript");
     jquery_tag.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js");
     jquery_tag.onload = scriptLoadHandler;
     (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(jquery_tag);
     if(jquery_tag.onload) { //ensure angular loads after jQuery
            getAngularTag();
     }
  }
  function getAngularTag() {
    console.log('now getting angular tag...');
    angular_tag.setAttribute("type","text/javascript");
    angular_tag.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js");
    angular_tag.onload = scriptLoadHandler;
    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(angular_tag);
  }
    getJqueryTag();

  function scriptLoadHandler() {
    if(window.jQuery) {
      jQuery = window.jQuery
      main();
    }
  }
  function main() {
    jQuery(document).ready(function($) { 
      console.log('now in main function'); //this prints fine
      var test = angular.module('test', []);
      function main_controller($scope, $http) {
        $http.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22fairfax%2C%20va%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys')
          .success(function(data) {
            console.log('---data returned---'); //not printing
            console.log(data); //not printing 
          })
          .error(function(data) {
            console.log('error: ' + data);
          });
      }
    }); 
  }
})();

Angular正在脱离范围。如果以这种方式加载,则需要调用bootstrap函数来启动angular并运行它。

我从未以这种方式加载过它,但请参阅:https://docs.angularjs.org/guide/bootstrap,特别是关于手动初始化的部分。