2014-01-05 31 views
4

有一个奇怪的问题。在我的Dart代码中,屏幕上有一些聚合物组件,其中一个有我从main()调用的方法。聚合物querySelector在DartVM上工作,但在编译后不在Chrome中

我做

PolyComp poly = querySelector("#idOfPolymer"); 
poly.flash(); 

这工作完全在抢镖对它的引用。页面加载并且PolyComp开始闪烁。但是,当我通过运行Dart IDE中的Build Polymer应用程序在Chrome中运行此应用程序时,出现一条错误,指出无法在null上调用flash()。

我最终通过只使用事件总线让PolyComp监听我的事件而使其闪光,但这太过于夸张。

我在做什么错?这发生在最新的Chrome,Firefox和Safari中。

编辑:

我建立以下聚合物应用JS也跑进了同样的问题。 https://github.com/sethladd/dart-polymer-dart-examples/blob/master/web/todo_element/todo.html

适用于DartVM,不适用于Chrome,因为它在空元素上调用方法。

+0

虽然这看起来奇怪:中[ –

+0

可能重复为什么jQuery的或DOM方法,例如\'的getElementById \'找不到元素?](http://stackoverflow.com/questions/14028959/why-does-jquery-or-a-dom-method-such-as-getelementbyid-not-find-the-element) –

+0

你应该尝试在chrome中调试并检查生成的代码周围,看看为什么你使用querySelector时得到null。你是否也确定(检查过)使用chrome时该元素在那里? – markovuksanovic

回答

7

当您从main()方法运行此代码时,它可能是一个计时问题。 你可以尝试像

import "package:polymer/polymer.dart"; 

main() { 
    initPolymer().run(() { 
    // code here works most of the time 
    Polymer.onReady.then((e) {  
     // some things must wait until onReady callback is called 
    }); 
    }); 
} 

也看到how to implement a main function in polymer apps

+0

哇,这样做它!感谢Gunter! –

+0

它总是一样的方式?它工作,但如果我尝试运行'pub build',它不起作用(不编译)。 – Druxtan

+0

@Druxtan可以请你创建另一个问题并添加错误输出。脚本标记的形式已过时 - 我将更新此帖子。 –

相关问题