我在我的项目中使用JSON和引导控件。在我的JSON中,我从我的sql database
中检索数据。现在我想用我的数据填充我的选择控件,但它不起作用,我看不到我做错了什么,并且我搜索了很多小提琴来让它工作。使用Json数据填充引导选择并敲除JS Viewmodel
这是我的JSON ::
var Projectss = function (data) {
var self = this;
self.ProjectName = ko.observable(data.ProjectName);
}
var ProjectModel = function (Projects) {
var self = this;
self.Projects = ko.observableArray(Projects);
$.ajax({
url: "CreateTask.aspx/GetProjectList",
// Current Page, Method
data: '{}',
// parameter map as JSON
type: "POST",
// data has to be POSTed
contentType: "application/json; charset=utf-8",
// posting JSON content
dataType: "JSON",
// type of data is JSON (must be upper case!)
timeout: 10000,
// AJAX timeout
success: function (Result) {
var MappedProjects =
$.map(Result.d,
function (item) { return new Projectss(item); });
self.Projects(MappedProjects);
},
error: function (xhr, status) {
alert(status + " - " + xhr.responseText);
}
});
};
$(document).ready(function() {
var VM = new ProjectModel();
ko.applyBindings(VM);
})
</script>
这是我想填充我的选择,这是我的TD
div data-bind="foreach: Projects">
select data-bind="options: $root.MappedProjects, optionsText: ProjectName, value: 'ProjectName'">
/select>
/div>
我已经修复了这样的绑定,但它不起作用。我用Json数据创建了一个jsfiddle.net/Fumunchu/N7J2E/,但它仍然不起作用。如果可能,请你帮我 – Gericke
@ G-Man我已经修好了你的小提琴:http://jsfiddle.net/nemesv/nBCwj/。但是你的绑定有很多错误。你有''选项:$ root.items optionstext:items.ProjectName“'。如果正确的绑定是“”选项:$ root.items,optionsText:'ProjectName'“'逗号丢失,并且绑定区分大小写。而你的映射插件的用法显然是错误的。我强烈建议您阅读有关基本敲除和ko映射插件的文档和示例。顺便说一下,手动映射代码在你的问题中具有更多的可追溯性和清晰性。 – nemesv
非常感谢您的帮助,非常感谢。 – Gericke