ノックアウトには、ko.toJS
とko.toJSON
という2つのユーティリティ機能があります。
var myPlainObject = ko.toJS(root)
は、オブジェクトを走査し、観察可能なものをプレーンJavaScriptプロパティに変換します。
var myJSONstring = ko.toJSON(root)
は、同じ結果を返してからJSON.stringify
を実行します。
したがって、viewModelでこれらの関数を使用して、プレーンJavaScriptオブジェクトを取得できます。
ドキュメントからの情報here。あなたのobservableArray内の項目は、観測が含まれていない場合は
は、あなたは単純にmyObservableArray()
アップデートを行うことで基本的な配列を取得できます。コメントに基づきます。以下のような作用に対する
var viewModel = {
items: ko.observableArray(["one", "two", "three", "four"]),
sendItems: function() {
$.ajax({
type: "POST",
url: "@Url.Action("Test")",
data: ko.toJSON(viewModel.items),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (data) {
alert(ko.toJSON(data));
}
}
});
}
};
を:これは私のために正常に動作します
//just echo back data
public JsonResult Test(List<String> myList)
{
return Json(myList);
}
この試合は何をしようとしているのか?
私の場合、observableArrayは文字列の配列を格納していますので、コントローラー側で配列を取得してループを使用できます: >> public JsonResultテスト(List myObservableArray) しかし、私はそれが直接observableArray内のループで文字列を取得できない配列ではなくオブジェクトを渡すことを送信します。 私はko.toJSON()を使用しようとしましたが、observableArrayを取得してコントローラ側の文字列配列に変換する方法はまだ分かりません。更新された回答 –
nelsonwrong
お役に立てれば。 –
あなたのおかげでありがとう、それは最終的に動作します:) – nelsonwrong