0

мой код это:ошибка нокаута, не ViewModel связанный

<div id="DivToUpdate"> 
    <div> 
     SELECTED ROOM: 
     <input type="text" id="currentRoom" /></div> 
    <div id="messagesList"> 
     <table> 
      <tbody data-bind="foreach: model.Messages"> 
       <tr data-bind="text: Message"> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

<script type="text/javascript"> 
var viewModel = {}; 
$('#DivToUpdate').click(function() { 
    $.getJSON("/ControllerAction/JsonPopulateMessages", { jsonRoom: $('#currentRoom').val() }, function (data) { 
     var trueData = JSON.stringify(data); 
     alert(trueData); 
     viewModel.model = ko.mapping.fromJSON(trueData); 
     ko.applyBindings(viewModel); 
    }); 
}); 
    </script> 

мой возвращаемые данные JSON в формате, как это:

{"Messages":[{"Message":["yow!"]},{"Message":["hey!"]}]} 

, когда я пытаюсь запустите код и нажмите «DivToUpdate», я ничего не вижу ... таблица и строки пустые .. это означает, что viewmodel не привязан правильно .. и когда я посмотрел на консоль е хрома, он говорит:

NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7 

я начинаю изучать нокаут и я был бы очень признателен, если вы могли бы сказать мне, как это исправить ...

+0

Есть причина, почему вы сопоставить данные viewModel.model вместо прямо к корню ViewModel? Имеет ли viewModel другие данные? В противном случае это кажется немного запутанным. –

+0

Я хочу использовать нокаут, чтобы страница могла обновляться без перезагрузки или обновления –

ответ

2

Вашего JSON выглядит немного странно, удалить [] вокруг значения Message. Думаю, это должна быть строка справа? Как вы создаете свой JSON?

обновление:

Когда я снова смотрю на это, я понимаю, что вы пытаетесь связать текст в тре-элемент, а тр может содержать только TD-элементы, поэтому вам нужно добавить td внутри вашего tr и привязать данные к td-элементу.

Попробуйте вместо этого:

<div id="messagesList"> 
     <table> 
      <tbody data-bind="foreach: model.Messages"> 
       <tr> 
        <td data-bind="text: Message"></td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
+0

AHAHA ... мои друзья и я смеемся ... нам нужно вернуться к основам HTML ... СПАСИБО СРОЧНО! –

+0

Мое удовольствие, я тоже пропустил его! –