jqueryに問題があります。変な振る舞いをしているようです。これが起こっていることです。JSONファイルから方程式を取得し、ノックアウトの観測可能なオブジェクトで評価しようとしています。
奇妙なことに、alert('')メッセージを使用した場合にのみ機能し、それがないと機能しません。
私は私の質問をグーグルで検索しました、そして私が得る答えはajax呼び出しに関してです。しかし、ここでjQuery関数$getJSONを使用しています
コード
function loadData(fileName) {
var data = $.getJSON( fileName + ".json");
return(data);
}
var res = 0;
var Student = function(data) {
var self = this;
ko.mapping.fromJS(data, { }, self);
var res = 0;
self.result = ko.computed(function() {
loadData("Eqn").done(function(data1) {
if (data1 && data1.eqn) {
$.each(data1.eqn, function(key, value){
var str = value.Equation;
res = eval (str);
});
}
});
return(res);
});
};
return()の前にアラートを追加すると、すべてが正常に機能します。
Eqn.json
{
"eqn":[
{
"Equation":"parseFloat(self.English()) + parseFloat(self.Japanese()) + parseFloat(self.Calculus()) + parseFloat(self.Geometry())"
}
]
}
Data.json
{
"info":[
{
"Name":"Noob Here",
"Major":"Language",
"Sex":"Male",
"English":"15",
"Japanese":"5",
"Calculus":"0",
"Geometry":"20"
},
{
"Name":"Noob Here",
"Major":"Calculus",
"Sex":"Female",
"English":"0.5",
"Japanese":"40",
"Calculus":"20",
"Geometry":"05"
}
]
}
完全なコードはここにあります