1

これがばかげた質問である場合は許してください。ただし、ドキュメントでこれを見つけることができないようです。

ko.observables(); を使用して ajax 経由で送信できる JSON オブジェクトを作成したいと考えています。

私のビュー モデルは次のようになりますが、問題は、storeNumber テキスト ボックスの値を空のテキスト ボックスに変更した場合です。self.searchTest オブジェクトでは更新されません。

私はこれを完全に間違っているかもしれません.これは私のテキストボックスからjsonオブジェクトを作成する最良の方法ですか? とても面倒そうです。

    function StoresViewModel() {
        // Data
        var self = this;
        self.stores = ko.observableArray([]);
        self.storeNumber = ko.observable();
        self.cityName = ko.observable();
        self.stateName = ko.observable();        



        self.searchTest = {
            "City": self.cityName,
            "State": self.stateName,
            "StoreNumber": self.storeNumber,
        };

HTML:

  <label for="term">Search by store number:</label>
  <input data-bind="value: storeNumber" id="storenumber" name="storenumber" 
  placeholder="Store Number"/>
  <br /><b>or</b><br />
 Search by city and state:<br />

 <input data-bind="value: cityName" id="city" name="city" placeholder="City"/>
 <select name="state" data-bind="value: stateName">//lots of selects</select>
4

2 に答える 2

1

Json オブジェクトを作成するには

var jsonObj = ko.toJS(StoresViewModel);
alert(jsonObj);//alerts the object.

注: ネイティブの JSON シリアライザー (IE 7 以前など) を持たない古いブラウザーでこれを機能させるには、json2.jsライブラリーも参照する必要があります。

JSON 文字列を生成するには

var jsonString = ko.toJSON(StoresViewModel);
alert(jsonString);//alerts the json String.

json String から json オブジェクトを作成することもできます

 var jsonString = ko.toJSON(StoresViewModel);
 alert(jsonString);//alerts the json String.

 var myJsonObj = $.parseJSON(jsonString);
 alert(myJsonObj);//alerts the object.
于 2013-03-05T06:11:36.950 に答える
0

以下を使用できます。

var js = ko.toJS(StoresViewModel);

これが最も簡単な方法ですが、IE 6 + 7 にJSON 文字列化ライブラリを含める必要があります。

または、Knockout.js マッピング プラグインを使用することもできます。これにより、ビュー モデルの一部のオブザーバブルを無視できるなど、柔軟性が向上します。

var mapping = {
    'ignore': ["propertyToIgnore", "alsoIgnoreThis"]
}
var viewModel = ko.mapping.fromJS(data, mapping);
于 2013-03-04T23:05:17.747 に答える