我正在尝试使用来自EntityFramework后端的对象将select和table绑定到ASP.NET中的AJAX调用结果。
这是脚本:
cacerts
以下是视图:
<script type="text/javascript">
function QuizListViewModel() {
var self = this;
self.quizList = ko.observableArray([]);
}
var qlvm = new QuizListViewModel();
ko.applyBindings(qlvm);
function FetchQuizzes() {
$.getJSON(
"/DesktopModules/personify/QuizAdminDos/API/QuizAdmin/QuizList",
function (result) {
var mapping = {
'observe': ["IdQuiz", "Name"]
}
parsedJsonQuizzes = jQuery.parseJSON(result);
console.log(parsedJsonQuizzes);
ko.mapping.fromJS(parsedJsonQuizzes, mapping, qlvm.quizList);
});
}
$(document).ready(function () {
FetchQuizzes();
});
</script>
我已通过调试验证我从JSON调用中获取了对象。我还验证了'quizList'observable在ko.mapping.fromJS调用之后有值。但是,我的选择中没有显示任何内容。我甚至没有获得“optionsCaption”值。
我是否可以直接绑定到EF对象(从DB生成)?这是从parsedJsonQuizzes的console.log输出返回的内容:
<select data-bind="options: quizList,
optionsText: function(quiz) { return quiz.Name() + '(Id: ' + quiz.IdQuiz() + ')'},
optionsCaption: 'Select a quiz...'"></select>
感谢您的帮助!
答案 0 :(得分:0)
我认为您需要将applyBindings
的调用移至$(documnent).ready
函数中,以便在尝试绑定之前确保已加载DOM。