Knockout2.0およびMVC3Razorフォームを使用して、ajaxメソッドを導入したときに、依存する観察可能な作業を行うことができません。計算の一部であるオブザーバブルのセットを設定しました。これらのオブザーバブルの積を返すと、正しい結果でSPANタグを設定できます。ただし、ajaxメソッドを使用してこれらのオブザーバブルを処理し、結果を返そうとすると、予期しない動作が発生します。まず、INPUTフィールドが更新されたときにajax POSTがオブザーバブルの1つを取得しないようです(アクションメソッドへのvar b POSTは0ですが、最終的には更新されます)。その後、設定できないようです。正しく評価された場合でも結果。オブザーバブルまたはajax呼び出しのいずれかにタイミングの問題があるようです。javascriptで計算を実行し続けるだけでも問題なく機能しますが、私の意図は、より複雑なロジックのためにajaxメソッドを呼び出すことです。doc.ready()からko.applybindingsの呼び出しを削除し、SCRIPTメソッドをページの下部に移動しました。これが、これを部分的に機能させる唯一の方法でした。私のviewModelは次のように設定されています:
var viewModel = {
a: ko.observable(0),
b: ko.observable(1),
c: ko.observable(2),
// commented this out, since
// the dependent observable will handle this
// d: ko.observable(0)
};
私の扶養家族のオブザーバブル:
viewModel.d = ko.dependentObservable(function () {
var theResult = 0;
$('.theLabel').css("visibility", "visible");
theResult=viewModel.a() * viewModel.b() * viewModel.c();
// if we return here we get a valid result
return (theResult);
// prefer to call ajax method
// first check to ensure one variable is set
if (viewModel.a() > 0) {
$.ajax("/myCalculation/getResult", {
data: ko.toJSON(viewModel),
type: "post",
context: viewModel,
contentType: "application/json",
success: function (result) {
// can't set visibility here
$('.theLabel').css("visibility", "visible");
// the POST does not pick up some observables, or
// does not the set dependent observable at all
return result;
}
});
}
});