0

私はKnockoutJSにかなり慣れていません。ドロップダウンメニューの変更により、ドロップダウンリストで選択した値に応じてヘルパーテキストが表示される場合、簡単なタスクを実行しようとしています。

私の例はjsFiddleにあります:http://jsfiddle.net/dnfCb/10/

注:jsFiddleへのリンクが許可されているかどうかはわかりません。許可されていない場合は、ここにコードを貼り付けます。ko.computedイベントはロード時にのみ発生するようです。基準が変更されたときにそれを起動させることができないようです。

お時間をいただきありがとうございます。

4

1 に答える 1

1

<select>変更を確認するには、値を実際の監視可能なプロパティにバインドする必要があります。

<-- ------------------------ here....................... -->
<select name="search_option" data-bind="value: criteria">
    <option value="O">Order Search</option>
    <option value="P">PO Number Search</option>
</select>

var orderSearchViewModel = {
   criteria: ko.observable("O")   // give a default value
};

orderSearchViewModel.helperText = ko.computed(function() {
    if (this.criteria() == "P") {
        return "Searching by PO Number";
    }else {
        return "Searching by Order Number";
    }
}, orderSearchViewModel);

ko.applyBindings(orderSearchViewModel);​

criteriaこれは、基になる値を取得するために実行する必要がある関数であることに注意してください。

if (this.criteria == "P")

動作しません。

http://jsfiddle.net/dnfCb/11/


ところで、自己完結型のビューモデルの設定は少し良いと思います:

function OrderSearchViewModel() {
  var self = this;

  this.criteria = ko.observable("O");
  this.helperText = ko.computed(function() {
    if ( self.criteria() == "P" ) {
      return "Searching by PO Number";
    } else {
      return "Searching by Order Number";
    }
  });
}

ko.applyBindings( new OrderSearchViewModel() );​
于 2012-09-19T16:09:30.203 に答える