もう、本当に、よくわかりません。Knockout を使用してインターフェイスを開発しようとしていますが、「toJSON」しようとすると頭が痛くなります。
問題は次のとおりです。
- FormViewModel があります。このフォームには、フォーム自体に関するロジックとメタ データ (観察可能データ) が含まれています。
- 私は FormSection を持っていますが、これには 2 つのオブザーバブルしかありません。
- 私には削除があり、観測可能なものは2つだけです。
JSONオブジェクトを受け取るPHPファイルにAJAXをしたいのですが、ここから先に進む方法がわかりません。すべてではなく、いくつかのオブザーバブルが必要です。また、Ajax 呼び出し (JSON を使用) から初期状態をロードできるようにしたいと考えています。
私のコードの関連部分は次のとおりです。
// This only has some observables
var FormSection = function(number)
{
var self = this;
this.title = ko.observable('Section ' + number);
this.selectedPageStyle = ko.observable();
};
// Only observable / computed
var Deletion = function(page)
{
var self = this;
// reference to a just deleted page, to make 'undeletion' possible
this.page = page;
this.pageTitle = ko.computed(function(){ return self.page.title() });
};
ここまでは順調ですが、いくつかのオブザーバブルや機能などを備えた ViewModel を取得しました。
var FormViewModel = function(data)
{
var self = this;
this.pages = ko.observableArray([]);
this.deletions = ko.observableArray([]);
this.name = ko.observable();
this.description = ko.observable();
this.availablePageStyles = ko.observableArray(['Header', 'Fields', 'Signatures']);
this.hasPages = ko.computed(function(){}, this);
this.numberOfPages = ko.computed(function(){}, this);
self.selectedPage = ko.observable( );
self.isPageSelected = function(page) {};
self.clearPage = function(data, event) {};
this.save = function() {
$.ajax("x", {
// WHAT TO DO?!
data: { data: ko.toJSON(this)},
type: "post",
//success: function(result) { alert(result) },
error : function(jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown)}
});
};
$.getJSON("x", function(allData) {
// How to populate back?!
});
this.addPage = function(data, event){}
this.removePage = function(page){}
this.unremovePage = function(deletion){}
};
関連するオブザーバブルを保存したい場合、どうすればよいかわかりません。例: は必要ありませんself.selectedPage
。私はそれを並べ替えにのみ使用します。
- ここでマッピングを使用しますか?
- 関連するオブザーバブルをマッピングする方法は?
- それをJSONに入れるにはどうすればよいですか?
- サーバーから受信した JSON から「マップ バック」するにはどうすればよいですか?