2013-05-29 3 views
-1

Я привязываю список данных к HTML, в каждом списке есть кнопка для получения информации по ajax. Я хочу привязать данные обратного вызова к члену модели. После обратного вызова ajax объект имеет данные, полученный результат (объект ko.toJSON (d, null, 2)). Но HTML не обновляет данные. Я не знаю, что не так. пожалуйста помоги. Спасибо.нокаут не обновляет html после получения данных из ajax

Html:

<section id="lists"> 
    <article class="todoList"> 
     <script type="text/html" id="person-template"> 
      <!-- <p>Credits: <span data-bind="text: message"></span></p>--> 
      <p>xxx</p> 
     </script> 
     <ul data-bind="foreach: Items"> 
      <li> 
       <div> 
        <span class="contentarea" data-bind="text: message"></span> 
        <button data-bind="click: $parent.evClick.bind($data)">Get details</button> 
        <button data-bind="click: detail">Ajax-Get</button> 
        <p>Credits: <span data-bind="text: d.message"></span></p> 
        <div style="display: block; width: 200px; height: 200px; border: solid 1px #ff6a00;" data-bind="text: ko.toJSON(d, null, 2)"></div> 
       </div> 

      </li> 
     </ul> 
    </article> 
</section> 

Полный код здесь. http://jsfiddle.net/wuttipat/sc8fX/12/

+0

Не работает jsFiddle: вы забыли добавить ссылки на Knockout и jQuery. Я сменил свою скрипку (см. Http://jsfiddle.net/petermorlion/sc8fX/2/), и я вижу в своем Firefox JS Console, что он пытается загрузить данные, но не может (поскольку URL-адрес не существует курс). – Peter

+2

Что я имею в виду, так это то, что было бы интересно, если бы вы могли предоставить jsFiddle, у которого есть только проблема, с которой вы столкнулись. Итак, замените код, выполняющий вызов ajax, на жестко закодированные данные (в том виде, который вы получаете от вашего вызова ajax). Таким образом, люди могут проверить это и посмотреть, что случилось. – Peter

+0

Привет, я просто добавляю макет данных в http://jsfiddle.net/petermorlion/sc8fX/2/ , когда вы нажимаете Ajax-get, объект toJSon будет связываться с div, но не получает обновления. –

ответ

1

Вы должны использовать

<div data-bind="with: d"> 
    <span data-bind="text: message"></span> 

Поскольку данные связываются = «с: d» создать возможности для связывания контекста при использовании данных привязки = «текст: сообщение» внутри он будет ссылаться на родительский контекст привязки в этом случае означает d.

Полный код здесь: http://jsfiddle.net/sc8fX/74/

+0

Это работает. Спасибо. –

0

Я думаю, что я это понял (после того, как еще немного очистил скрипку). Вы связывание

text: d.message 

Но это должно быть

text: message 

Поскольку d контекст вашей переплета. Таким образом, вы на самом деле пытаетесь привязать к d.d.message, которого не существует. Замена его text: message, похоже, сработала, нет?

См. this updated fiddle.

+0

Привет, В моем объектном тексте: сообщение является сообщением элемента списка. Он будет связываться при применении привязки, но текст: d.message - это сообщение из объекта обратного вызова ajax. –

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