2014-01-05 30 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可以請你創建另一個問題並添加錯誤輸出。腳本標記的形式已過時 - 我將更新此帖子。 –

相關問題