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>

編集:これがjsfiddleです:http: //jsfiddle.net/jLkxG/3/

実行すると、デフォルト値が割り当てられます。ただし、テキストボックスを編集して[保存リンク]をクリックすると、テキストボックスに入力された値ではなく、元の(初期)値が出力されます。

4

2 に答える 2

1

jsfiddleのコードと一致するようにコードを更新してください。

jsfiddleでは、editing_topicプ​​ロパティ(topic_titleおよびmessage_contents)は、editing_topicプ​​ロパティ自体ではなく、監視可能として定義する必要があります。

jsfiddleが正しく機能するように更新しました:http://jsfiddle.net/jLkxG/4/

于 2012-04-09T02:07:09.317 に答える
1

あなたが提供したコードは完全には意味がありません。

あなたが提供したフィールドセットのマークアップがダイアログの内容だと思いますか? その場合、入力は何にバインドされていますか?

現時点では、テキスト ボックスは viewModel のトピック プロパティにバインドされていますが、そのようなプロパティは存在しません。また、このトピック オブジェクトにはプロパティ topic_title と message_contents があると予想されますが、これらはモデルにありません。プロパティを作成するために値バインディングが存在する場合、これは機能しません。

もっとコードを表示するか、フィドルを提供する必要があると思います。あなたのコードを自由にjsfiddleにコピーしました。

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

于 2012-04-09T00:26:04.803 に答える