2015-01-25 3 views
1

Я очень новичок в веб-разработке, и у меня есть ошибка с ошибкой firebase.«Неиспользуемый типError: undefined is not function» error on firebase

Я использую Firebase и jQuery для создания веб-приложения, которое распознает голос и переводит его в текст. (Speech-to-Text, STT)

Я должен нажать результаты STT в реальном времени, чтобы все клиенты могли видеть текст.

Однако, проблема возникает в этом событии слушателем:

finalSTTField.click(function (e) { 
     var message = finalSTTField.val(); 
     sttRef.push({ text: message }); 
    }); 

В результате STT, строка находится в finalSTTField, который объявлен как показано ниже:

var finalSTTField = $('#final_span'); 

И я хочу натянуть тетиву с помощью firebase:

var sttRef = new Firebase('https://sizzling-torch-2935.firebaseio.com/'); 

и

<div class="sttResultContainer"> 
    <ul id="sttMessages"></ul> 
</div> 

с

var sttResults = $('#sttMessages'); 

sttRef.limitToLast(10).on('child_added', function (snapshot) { 
     var data = snapshot.val(); 
     var sttText = data.value(); 

     var messageElement = $("<li>"); 
     messageElement.text(sttText); 
     sttResults.append(messageElement); 
     sttResults[0].scrollTop = sttResults[0].scrollHeight; 
    }); 

Но ничего не показывает в sttResults.

Сообщение об ошибке на хромированной браузер: firebase.js: 26 Uncaught TypeError: не определено не является функцией

Количество ошибок увеличивается каждый раз, когда происходит событие щелчка. (Как ни странно, отсчет начинается с 10)

Первые транскрипты STT хорошо отображаются в поле #final_span. Но я должен нажать строку в #final_span в реальном времени ...

Кто-нибудь мне поможет! Это мой первый веб-приложение ...

Полный исходный код здесь: full source in JSFiddle

ответ

1

Эта линия является неправильным:

var sttText = data.value(); 

После вызова val() на снимок, чтобы получить значение, вы получите объект JSON. На этом объекте не определены методы. Ваш текст вместо этого в собственности ребенка, так что вы можете получить его любит:

var data = snapshot.val(); 
var sttText = data.text; 

Обратите внимание, что это довольно легко найти такую ​​проблему, если вы поставите console.log заявления после извлечения данных:

var data = snapshot.val(); 
console.log(data); 

Это очень обычная техника устранения неполадок. В вашей скрипке печатаются:

Object {text: ""}

Смежные вопросы