我的目标是将用户选择保存在 KendoUIWeb-Multiselect 的多选列表中。我觉得跟踪列表更改的最简单方法就是删除多对多关系中的所有内容并添加新选择的项目。当我遍历多对多关系并将每个实体的方面设置为“setDeleted”时,迭代开始通过循环传递“未定义”对象。从表面上看,设置一个连词对象删除似乎会影响 Breeze 中列表中的其他对象。还有另一种方法可以迭代地删除所有连接对象吗?
注意:如果我不调用此方法,我可以毫无问题地遍历合取模型。
public class Course
{
public int Id { get;set; }
public string Name { get;set; }
}
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
public class StudentCourse
{
public int StudentId { get;set; }
public virtual Student Student { get;set; }
public int CourseId { get;set; }
public virtual Course Course { get;set; }
}
以下代码完美运行(为 KendoUI 多选设置多选下拉菜单):
var getSelectedCourses = function () {
var selected = [];
ko.utils.arrayForEach(student().studentCourses(), function(course) {
var courseId = parseInt(course.courseId());
selected.push(courseId);
});
return selected;
};
该问题体现在以下代码中。前几次迭代似乎很好,但之后“未定义”作为“课程”参数传递
var removeListItems = function () {
if (courseHasChanges()) {
//Remove all list items
ko.utils.arrayForEach(student().studentCourses(), function(studentCourse) {
if (studentCourse) { //passing undefined after 2nd or 3rd iteration
studentCourse.entityAspect.setDeleted();
}
});
}
};