2013-05-29 64 views
-1

我將數據列表綁定到HTML,每個列表中都有用於通過ajax獲取詳細信息的按鈕。我想將回調數據綁定到模型的成員,在ajax回調後,對象有數據,接收到的視圖(ko.toJSON(d,null,2))對象。但HTML不會更新數據。 我不知道什麼是錯的。請幫忙。謝謝。從ajax獲取數據後,淘汰賽不會更新html

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控制檯看到它正在嘗試加載數據,但不能(因爲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

嗨,在我的對象文本中:消息是列表項的消息。它會在我們應用綁定時綁定,但是text:d.message是來自ajax回調對象的消息。 –