2012-04-08 4 views
0

새 블로그 항목의 저장 링크를 클릭하면 콘솔 출력이 항목 개체의 빈 값이됩니다. 기존 블로그 주제에 대한 저장 링크를 누르면 출력은 주제 객체에 대한 이전 값입니다.양방향 바인딩이 작동하지 않습니다.

저장 링크를 클릭 할 때 값에 속성이 할당되지 않는 이유는 무엇입니까?

var viewModel = function(topics){ 
     var self = this; 
     self.topics = ko.observableArray(topics); 
     self.editing_topic = ko.observable(""); 

     self.new_topic = function(){ 
      self.edit_topic({}); 
     } 

     self.edit_topic = function(topic){ 
      self.editing_topic(topic); 
      form.dialog({width:800, height:600, modal:true}); 

     }; 

     self.save_topic = function(){ 
      console.log(self.topic()); 
     }; 
    }; 
    ko.applyBindings(new viewModel(jsondata)); 

<fieldset class="blog_topic_form" title="New Blog Entry"> 
    <div> 
     <label for="topic_title"> 
      Title: 
     </label> 
     <input type="text" id="topic_title" data-bind="value: topic().topic_title"/> 
    </div> 
    <div> 
     <label for="message_contents"> 
      Message: 
     </label> 
     <textarea id="message_contents" class="message_contents" data-bind="value: topic().message_contents"/> 
    </div> 
    <footer> 
     <a class="save_link" data-bind="click: save_topic"></a> 
     <a class="cancel_link"></a> 
    </footer> 
</fieldset> 

편집

: 당신이 그것을 실행하면 http://jsfiddle.net/jLkxG/3/

, 그것은 기본 값을 할당합니다 : 여기 는 jsfiddle입니다. 그러나 텍스트 상자를 편집하고 savelink를 클릭하면 텍스트 상자에 입력 된 값 대신 원래 (초기) 값이 출력됩니다.

+0

당신이 이것에 대한 jsfiddle을 게시 할 수 :

나는 제대로 작동하도록 jsfiddle 업데이트되었습니다? 귀하의 바인딩에있는 topic()이 viewModel의 속성이 아니기 때문에이 항목이 무엇을 의미하는지 말할 수 없습니다. – Tuan

답변

1

jsfiddle의 코드와 일치하는 코드를 업데이트하시기 바랍니다.

jsfiddle에서 editing_topic 속성 (topic_title 및 message_contents)은 editing_topic 속성 자체가 아닌 observable로 정의해야합니다. http://jsfiddle.net/jLkxG/4/

+0

감사합니다. 문제가 해결되었습니다. – firebird

1

제공하신 코드가 완전하지 않습니다.

내가 제공 한 필드 세트 마크 업이 대화 상자의 내용이라고 가정합니다. 그렇다면 입력 내용은 무엇입니까?

텍스트 상자는 viewModel의 topic 속성에 바인딩되지만 해당 속성은 없습니다. 이 주제 객체가 topic_title 속성 & message_contents를 가질 것으로 예상되지만 이것들은 모델에 없습니다. 속성을 만들기 위해 값 바인딩을 기존으로 사용하는 경우 이것이 작동하는 방식이 아닙니다.

나는 더 많은 코드를 보여 주거나 바이올린을 제공해야한다고 생각합니다. jsfiddle에서 코드를 복사 할 자유를 얻었습니다.

http://jsfiddle.net/madcapnmckay/jLkxG/

관련 문제