我有一個視圖模型,通過AJAX獲取JSON,並創建一個新的任務,但敲除不斷給我一個綁定錯誤。Knockout.js:無法解析JSON綁定
如果我直接在我的視圖模型中硬編碼來自服務器的數據,我不會收到任何錯誤。
我的視圖模型創建一個新的任務,它有一個id,一個問題和一些替代品,它本身有一個文本和正確的布爾標誌。
下面的代碼工作完全正常:
function Task(data) {
var self = this;
self.id = data.id;
self.question = ko.observable(data.question);
var alts = new Array();
$(data.alternatives).each(function(index){
alts.push(new Alternative(data.alternatives[index].alternative, data.alternatives[index].correct));
});
self.alternatives = ko.observableArray(alts);
}
function Alternative(alternativeText, correctAnswer) {
var self = this;
self.alternative = ko.observable(alternativeText);
self.correct = ko.observable(correctAnswer);
}
function TaskViewModel() {
var self = this;
var data = {
id: 5,
question: 'test',
alternatives: [{
alternative: 'alt 1',
correct: false
},{
alternative: 'alt 2',
correct: true
},{
alternative: 'alt 3',
correct: false
}]
};
self.task = new Task(data);
}
但如果我exhcange硬編碼data
變量,從服務器的真實數據:
function TaskViewModel() {
var self = this;
$.getJSON('/data', function(data){
self.task = new Task(data);
});
}
淘汰賽給了我這個錯誤:
Error: Unable to parse bindings.
Message: ReferenceError: Can't find variable: task;
Bindings value: value: task.question
來自URL的數據如下所示:
{"id":5,"question":"test","alternatives":[{"alternative":"alt 1","correct":false},{"alternative":"alt 2","correct":true},{"alternative":"alt 3","correct":false}]}
我似乎無法找出爲什麼這是行不通的:/
謝謝你。實際上,在你使用初始化方法提到的東西(你在這裏介紹過)之後,我想到了這一點。這使得它正常工作:) –