【发布时间】:2015-08-27 01:47:20
【问题描述】:
我有一个应用程序,允许用户制作具有多个课程区域的课程。从选择下拉列表中选择课程区域。该列表使用敲除进行数据绑定。
HTML
<select id="courseAreaType" name="selectCourseArea" class="form-control" data-bind="options:$parent.courseAreaTypes, optionsText: 'name', optionsValue:'id', optionsAfterRender:$parent.setIconPath, value:typeid"></select>
我需要做的是在加载课程时,加载我已经完成的不同课程区域。对于每个课程区域,它需要将其值加载到其各种控件中。
我已经能够使用数据库中的值列表加载选择下拉菜单,并允许当用户选择一个选项并保存课程区域时,它会成功保存课程区域名称。
现在我需要做的是,当再次加载每个课程区域时,它会根据 courseArea.Name 从下拉列表中选择选项
淘汰赛
var CourseViewModel = function (courseIn) {
var self = this;
if (courseIn === undefined) {
courseIn = {};
}
self.id = courseIn.Id;
self.name = ko.observable(courseIn.Name);
self.postalCode = ko.observable(courseIn.PostalCode);
self.city = ko.observable(courseIn.City);
self.province = ko.observable(courseIn.Province);
self.courseId = ko.observable(courseIn.CourseId);
self.courseAreas = ko.observableArray();
self.courseAreaTypes = ko.observableArray();
$.each(courseIn.CourseAreas, function(index, courseArea) {
self.courseAreas.push(new CourseAreaViewModel(courseArea));
});
$.getJSON("/Course/GetCourseAreaTypes", function (types) {
$.each(types, function (index, type) {
self.courseAreaTypes.push(new CourseAreaTypeViewModel(type));
});
});
$.each(courseIn.CourseAreas, function (index, courseArea) {
console.log(courseArea.Name);
var list = $('#courseAreaType');
var options = $('option', list); // This is where my problem is
});
self.setIconPath = function (option, courseAreaType) {
$(option).data("icon", courseAreaType.iconPath)
//console.log($(option).data("icon"));
}
}
var CourseAreaTypeViewModel = function (courseAreaTypeIn) {
var self = this;
if (courseAreaTypeIn === undefined) {
courseAreaTypeIn = {};
}
self.id = courseAreaTypeIn.ID;
self.name = courseAreaTypeIn.Name;
self.iconPath = courseAreaTypeIn.iconPath;
}
var CourseAreaViewModel = function(courseAreaIn) {
var self = this;
if (courseAreaIn === undefined) {
courseAreaIn = {};
}
self.id = courseAreaIn.Id;
self.name = ko.observable(courseAreaIn.Name);
self.acreage = ko.observable(courseAreaIn.Acreage);
self.goals = ko.observable(courseAreaIn.Goals);
self.typeid = ko.observable(courseAreaIn.TypeID);
self.selectedOption = ko.observable();
}
我尝试根据获取元素 ID 来更改它,我尝试了 .val、.prop、.attr 没有任何成功。当我将数据记录到元素的控制台时,它没有在下拉列表中显示值,所以我有一种感觉是在脚本级别添加值,而 jquery 无法看到这些值。
【问题讨论】:
-
看起来你的 JS 缺少一个右大括号,这反过来又使它看起来 CourseAreaTypeViewModel 和 CourseAreaViewModel 是在 CourseViewModel 中定义的......我猜你不是这个意思所以我整理了调整格式 - 看起来如何?
-
你是对的。谢谢
标签: javascript jquery knockout.js