ошибка при вызове метода distribteMessage с использованием now.js - PullRequest
1 голос
/ 15 декабря 2011

Начал играть с фреймворком now.js. Используя пример кода в now.js, я пытаюсь реализовать чат. В том числе и здесь для полноты.

<script src="http://localhost:8080/nowjs/now.js" type="text/javascript"></script>

<!-- HTML for Chat Here  -->

$(document).ready(function() {

  now.receiveMessage = function(name, message) {
    $(".chattext").append("<br>" + name + ": " + message);
    $(".chattext").attr({ scrollTop: $(".chattext").attr("scrollHeight") });
  }

  $("#send-button").click(function() {
    now.distributeMessage($("#text-input").val());
    $("#text-input").val("");
  });

  now.name = prompt("What's your name?", "")

});

У меня есть сервер node.js с now.js, работающим правильно.

Я пытаюсь расширить чат таким образом, чтобы, когда пользователь вводил свое имя, на сервер отправлялось сообщение о том, что он «присоединился к чату». Пример кода запрашивает у пользователя имя и устанавливает его для имени текущего объекта.

now.name = prompt("What's your name?", "");

На данный момент объект now доступен. Поэтому вместо того, чтобы просто установить now.name, я пытаюсь установить now.name И отправить сообщение, вызвав метод connectteMessage ('Джон присоединился к чату.')

var p = prompt("What's your name?", "");
if (!p) {
    // errs here
} else {
    now.name = p;
    now.distributeMessage(now.name + " has joined chat.");
}

Chrome и Firefox сообщают об ошибке, которая гласит

Объект # не имеет метода «DistributeMessage».

Я не понимаю, почему. Свойство now.name может быть установлено. В журнале консоли показан объект с функциями get distribteMessage и set распределитьMessage. Я могу отправить сообщение, когда нажму на кнопку «Отправить». Но в данный момент я не могу вызвать сообщение

Объект now загружается не полностью, когда я пытаюсь вызвать метод? Нужно ли включать какой-то «сейчас» метод onLoadReady? Что мне нужно сделать, чтобы запустить метод now.distributeMessage после запроса?

1 Ответ

1 голос
/ 15 декабря 2011

Я нашел способ решить мою проблему. Мне нужно окружить вызов для распространения сообщения с

now.ready(function() {
  now.distributeMessage(now.name + " has joined chat.");
})

Похоже, что теперь пространство имен на стороне клиента было доступно, но все вызовы на стороне сервера все еще требуют JavaScript для завершения обработки.

...