Как решить "не могу вызвать метод ... к неопределенному" в закрытии Google (создание простой панели инструментов)? - PullRequest
4 голосов
/ 21 февраля 2010

ниже - полный исходный код HTML для создания простой панели инструментов с Google Closure.

В Chrome выдается сообщение об ошибке: Uncaught TypeError: Cannot call method 'addChild' of undefined в месте, отмеченном // ERROR комментарием.

Кто-нибудь может предложить совет, исправляющий это? Спасибо !!!

edit: Правильно, пропущено new , но другая ошибка заключалась в том, что я должен был использовать render() вместо decorate(), поскольку decorate() требует, чтобы все элементы dom place (и у меня нет заполнителей для определенных кнопок), в то время как render() создает новые.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 


<script type="text/javascript" src="/m/google-closure/closure/goog/base.js"></script> 
<script type="text/javascript"> 
    goog.require('goog.dom');
    goog.require('goog.ui.Toolbar');
    goog.require('goog.ui.ToolbarButton');
</script> 
<script type="text/javascript"> 
    var load_sketcher = function(){
        var tb = goog.ui.Toolbar();
        tb.addChild(new goog.ui.ToolbarButton('A'), true);// ERROR!!!
        tb.addChild(new goog.ui.ToolbarButton('B'), true);
        tb.decorate(goog.dom.getElement('sk_toolbar'));// should have used render() here
    };
</script> 

</head> 
<body onload='load_sketcher();'> 

<div id="sketcher"> 
    <div id="sk_toolbar"></div> 
    <div id="sk_canvas"></div> 
</div> 

</body> 
</html> 

1 Ответ

5 голосов
/ 21 февраля 2010

Могут быть и другие проблемы, но ошибка в том, что вам нужно новое ключевое слово, поэтому строка должна выглядеть следующим образом:

 var tb = new goog.ui.Toolbar();
...