我在项目中使用JSON和bootstrap控件。在我的JSON中,我从sql database
检索数据。现在我想用我的数据填充我的选择控件,但它不起作用,我看不出我做错了什么,我搜索了很多小提琴让它工作。
这是我的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>
答案 0 :(得分:6)
使用optionsText
select binding option,您需要将属性名称指定为字符串,因此您需要编写'ProjectName'
(请注意单引号)。
但是value
binding需要属性本身,所以你需要写ProjectName
(注意没有引号)。
所以固定绑定看起来像这样:
<div data-bind="foreach: Projects">
<select data-bind="options: $root.MappedProjects,
optionsText: 'ProjectName', value: ProjectName">
</select>
</div>
答案 1 :(得分:1)
我找到了一种更简单的方法来填充选择权用淘汰赛:
HTML:
<div class="bar">
Select Query:
<select id="QueryName" data-bind="options: Data, optionsText: 'QueryName', value: QueryName, event: { 'change': vm.LoadQuery }">
</select>
</div>
可以通过添加以下内容添加事件以加载更改数据:event: { 'change': vm.LoadQuery }
淘汰赛:
vm = {
Data: ko.observableArray(),
}
function LoadQueries() {
$.ajax({
type: "POST",
url: "ExportCustomQueriesList.aspx/GetQueries",
contentType: "application/json",
success: function (response) {
vm.Data(ko.utils.unwrapObservable(ko.mapping.fromJS(response.d)));
ko.applyBindings(vm);
//var n = noty({ text: 'Query in progress of execution', theme: 'default', layout: 'center', timeout: 2000, type: 'error' });
}
})
}