0

ノックアウト js の使用に問題があります。ここでは、プロパティ名 selectedItem がラジオボタンのチェック済み属性にバインドされているオブザーバブル配列を使用しています。オプションを変更するときは、クリックされた前の値と現在の値の両方が必要です。

<div style="font-size: 11px; line-height: 1.28; margin-left: 5px; margin-top: 10px;"
      data-bind="foreach:OptionDetail">
  <div>
    **<input  type="radio" class="mts" style="float: left; margin-left: 5px" data-bind="attr:{name:ParentCourseItemID,value:OptionDescription},click:function($root,event){SaveOptionForPoll($root,Option,SelectedItemID)},checked:SelectedItemID" />**
  </div>
  <input type="hidden" data-bind="attr:{id:'hdnSelectOption'+CourseItemID}" />
  <div data-bind="event: { mouseover: $root.ShowVoteCount, mouseout: $root.HideVoteCount }" style="margin-bottom: 5px; border: 1px solid #CCC; background-color: white;
                                zoom: 1; float: left; width: 210px; margin-left: 5px; height: 25px;">
    <div style="text-align: left; float: left; margin-top: 5px; margin-left: 5px;" data-bind="html:OptionDescription">
    </div>
    <div style="float: right; display:none; width: 50px; background-color: yellow; height: 52%; padding: 6px;"
        data-bind="attr:{id:'poll'+CourseItemID}">
      <span style="margin-right:5px;" data-bind="text:VoteCount"></span>Votes
    </div>
  </div>
  <div style="padding-left: 5px; padding-right: 5px; height: 100%">
    <span style="position: relative; top: 4px"></span>
  </div>
</div>
4

1 に答える 1

1

現在の値が変化するたびに、以前の値を記録することはできませんでしたか。何かのようなもの。

var viewModel = function(data) {
    var self = this;
    this.value = ko.observable();
    this.previousValue = ko.observable(this.value());

    this.value.subscribe(function (newValue) {
        console.log("current value: " + newValue + " previousValue: " 
               + self.previousValue());
        // do something with previous value
        self.previousValue(self.value());    
    });
};

ko.applyBindings(new viewModel());

http://jsfiddle.net/madcapnmckay/2ZwDm​​/1/

お役に立てれば。

于 2012-05-15T16:58:14.553 に答える