0

私は Knockout.js を使用して、クリック ハンドラーの一部として渡されたデータ オブジェクトのプロパティを解決する方法を見つけようとしています。これまでのところ、オブジェクトに関連付けられた関数のテキスト定義のみを検索/表示できます。

たとえば、Chrome を使用してクリック バインディングによって渡されたデータ オブジェクトを調査すると、次の情報しか見つかりません。

> data.CityId.toString
function toString() { [native code] }

> data.CityId.toString()
"function b(){if(0<arguments.length){if(!b.equalityComparer||!b.equalityComparer(d,arguments[0]))b.H(),d=arguments[0],b.G();return this}r.T.Ha(b);return d}"

プログラム:

プログラムはいくつかの都市を一覧表示します。要素をクリックすると、関数を呼び出してデータを更新し、ビュー モデル インスタンスからパラメーターを渡します。

私はマッピング プラグインを使用していますが、ビュー モデルは事実上次のようになります。

  • 都市ID
  • 都市名

メソッドを呼び出す HTML テンプレート:

   <div data-bind="click: function(data, event) { UpdateForCity(data, event); }">
      <span data-bind="text: CityName"></span>
    </div>

呼び出される関数:

function UpdateForCity(data, event) {
    alert('CityId: ' + data.CityId); // This is the part where I'd like to resolve the value
}

関数は値を受け取りますが、プロパティを解決する方法を見つけるすべての試みは、これまでのところうまくいきませんでした。上記の例の CityId プロパティを解決するにはどうすればよいですか? (そして、MVVM/knockout パターンで何か誤解したことがありますか?)

ありがとう。

4

2 に答える 2

0

これだけのユーティリティメソッドがあることがわかりました:

var cityId = ko.utils.unwrapObservable(data.CityId);

ビューモデルアイテムの各インスタンスに関数をアタッチすることも可能のようですが、マッピング プラグインの構成をより深く理解する必要があります...

于 2012-04-24T09:19:42.453 に答える
-1

いくつかのノックアウトの問題を解決するために今参照しているRyanNiemeyerによって作成されたフィドルの例を提供するだけです。フィドルへのリンクは次のとおりです:http://jsfiddle.net/rniemeyer/vdcUA/

さらに詳しい情報が必要な場合は、ノックミーアウトサイトにアクセスしてチェックアウトすることもできます

お役に立てれば

于 2012-04-24T07:25:50.760 に答える