Javascript 轻松处理多对多关系并将Aspect设置为';setDeleted';关于迭代问题
我的目标是将用户选择保存在KendoUIWeb Multiselect的multi-selected列表中。我觉得跟踪列表更改的最简单方法就是删除多对多关系中的所有内容,并添加新选择的项目。 当我迭代多对多关系并将每个实体的方面设置为“setDeleted”时,迭代开始通过循环传递“undefined”对象。表面上看,将连接对象设置为删除似乎会影响Breeze中列表中的其他对象。是否有其他方法可以迭代删除所有连接对象 注意: 如果不调用此方法,我可以在连接模型中进行迭代,而不会出现任何问题Javascript 轻松处理多对多关系并将Aspect设置为';setDeleted';关于迭代问题,javascript,knockout.js,kendo-ui,breeze,Javascript,Knockout.js,Kendo Ui,Breeze,我的目标是将用户选择保存在KendoUIWeb Multiselect的multi-selected列表中。我觉得跟踪列表更改的最简单方法就是删除多对多关系中的所有内容,并添加新选择的项目。 当我迭代多对多关系并将每个实体的方面设置为“setDeleted”时,迭代开始通过循环传递“undefined”对象。表面上看,将连接对象设置为删除似乎会影响Breeze中列表中的其他对象。是否有其他方法可以迭代删除所有连接对象 注意: 如果不调用此方法,我可以在连接模型中进行迭代,而不会出现任何问题 pu
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 multiselect设置multi selected下拉列表):
以下代码显示了该问题。前两次迭代似乎进行得很顺利,但之后“undefined”作为“course”参数传递
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();
}
});
}
};
我相信Breeze将从
studentCourses()
数组中删除该课程,因为您正在调用setDeleted()
也许使用slice(0)
克隆原始studentCourses()
数组可以工作:(未测试)
我相信Breeze将从
studentCourses()
数组中删除该课程,因为您正在调用setDeleted()
也许使用slice(0)
克隆原始studentCourses()
数组可以工作:(未测试)
没错,布伦丹。另一方面,我最初被删除函数的参数名
course
弄糊涂了。该函数实际上是在删除StudentCourses
。很抱歉……但是,是的,我的目标是删除所有StudentCourses关系…@David-是否将slice(0)
添加到arrayForEach
参数帮助中?没错,Brendan。另一方面,我最初被删除函数的参数名course
弄糊涂了。该函数实际上是在删除StudentCourses
。很抱歉……但是,是的,我的目标是删除所有StudentCourses关系…@David-是否将slice(0)
添加到arrayForEach
参数帮助中?
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();
}
});
}
};
var removeListItems = function () {
if (courseHasChanges()) {
//Remove all list items
ko.utils.arrayForEach(student().studentCourses().slice(0), function(course) {
if (course) { //passing undefined after 2nd or 3rd iteration
course.entityAspect.setDeleted();
}
});
}
};