【问题标题】:Why migrating code to class structure breaks code?为什么将代码迁移到类结构会破坏代码?
【发布时间】:2012-07-05 09:23:06
【问题描述】:

这个Google jQuery GeoChart plugin 像这样工作得很好:

<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
     google.load('visualization', '1', {'packages': ['geochart']});
     google.setOnLoadCallback(drawRegionsMap);

      function drawRegionsMap() {
        // code to draw map
      };

</script>

但是将代码移动到类中会破坏一切。浏览器为空白,状态仍为“正在从 www.google.com 传输数据”。

(function( someClass, undefined ) {
    someClass.init= function() {
       console.log(google); //google object defined but next line breaks:
       google.load('visualization', '1', {'packages': ['geochart']}); 

       ...remainder of code
    };
}( window.Project.Pages.someClass = window.Project.Pages.someClass || {}));

有什么想法吗?

【问题讨论】:

  • 您的代码看起来基本正确,但是您在匿名函数的右括号后缺少)}( window.Project.Pages... => })( window.Project.Pages ... 可能是问题所在?
  • @George,你确定吗?为什么) 在那里?
  • 忽略,我在想对应于你的块开始的右括号需要去那里,但它也可以在最后去。疱疹病毒。
  • 你能展示一个小提琴/现场例子吗?因为它对我有用
  • @Jashwant,它看起来有点像jsbin.com/inurif/edit#source,但它不起作用。我已将脚本移至头部,并验证了代码。我认为由于加载问题、与 jQuery、google.load 和 DOM 的集成(参见 RobW 的线程),实际存在问题。

标签: javascript jquery plugins google-visualization


【解决方案1】:

问题是由 Google 加载脚本的方式引起的。 this question中出现问题的简化版本:问题是由于Google脚本的加载延迟造成的。

我之前写了一个补丁来解决这个问题,见this answer。只需在使用 google.load 之前评估补丁。

【讨论】:

  • 我认为您对问题的看法是正确的。它现在说 google.visualization 是未定义的。我已经动态加载了你的补丁,但没有运气。
  • @Emile 我已经测试并修复了我的补丁。问题是我的原始代码包含单字母变量名。为了可读性,我在发帖前将函数中的a重命名为a_listener,但是忘记重命名函数参数。我再次测试了代码,它似乎可以工作:pastebin.com/D6nyCxB4
【解决方案2】:

我不知道你的意思,但这有效...

(function( someClass ) {
    someClass.init= function() {
       google.load('visualization', '1', {'packages': ['geochart']}); 
       google.setOnLoadCallback(function(){ alert('setOnLoadCallback'); });
    };
}( someClass = {}));
someClass.init();

http://jsbin.com/inurif/edit#source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2021-08-15
    • 2020-02-10
    • 2012-10-08
    • 2021-09-12
    相关资源
    最近更新 更多