サーバーから ajax 経由でデータを読み込み、この情報をモデルに出力するノックアウト スクリプトがあります。すべてを単純化すると、私のモデルは次のようになります。
function ArticleViewModel() {
var self = this;
this.articleInfo = ko.observable();
this.getArticle = function(id) {
$.get("/router.php", { articleId: id }, self.articleInfo, 'json');
};
};
すべてがうまく機能します (私のビューにはサーバーからの情報が取り込まれます)。しかし、必要なのはこの情報を変更することです (たとえば、データをタイムスタンプから人間が読める形式に変更するなど)。
私が理解しているように、それを達成する1つの方法は、計算されたオブザーバブルをノックアウトすることですが、ここでタイムスタンプを必要とせず、更新後にデータを1回変更して使用できるため、これを行う理由がわかりません(計算されたオブザーバブルで目的を達成する理由と方法を教えていただければ幸いです)。
したがって、次の方法で ajax リクエストのデータを変更しようとしています (すべて同じですが、ajax 呼び出しにはコールバックがあります)。
$.get("/router.php", { type : 'mail' }, function(i){
var d = new Date(i.date);
self.articleInfo = {
date: d.toString(),
title: i.title
};
}, 'json');
ページにエラーはありませんが、情報が表示されません。他のページに移動すると、次の警告が表示されます。TypeError {stack: (...), message: "500 Error get /#Home Property 'articleInfo' of object #<ArticleViewModel> is not a function"}
私は何を間違っていますか?