Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 轻松处理多对多关系并将Aspect设置为';setDeleted';关于迭代问题_Javascript_Knockout.js_Kendo Ui_Breeze - Fatal编程技术网

Javascript 轻松处理多对多关系并将Aspect设置为';setDeleted';关于迭代问题

Javascript 轻松处理多对多关系并将Aspect设置为';setDeleted';关于迭代问题,javascript,knockout.js,kendo-ui,breeze,Javascript,Knockout.js,Kendo Ui,Breeze,我的目标是将用户选择保存在KendoUIWeb Multiselect的multi-selected列表中。我觉得跟踪列表更改的最简单方法就是删除多对多关系中的所有内容,并添加新选择的项目。 当我迭代多对多关系并将每个实体的方面设置为“setDeleted”时,迭代开始通过循环传递“undefined”对象。表面上看,将连接对象设置为删除似乎会影响Breeze中列表中的其他对象。是否有其他方法可以迭代删除所有连接对象 注意: 如果不调用此方法,我可以在连接模型中进行迭代,而不会出现任何问题 pu

我的目标是将用户选择保存在KendoUIWeb Multiselect的multi-selected列表中。我觉得跟踪列表更改的最简单方法就是删除多对多关系中的所有内容,并添加新选择的项目。 当我迭代多对多关系并将每个实体的方面设置为“setDeleted”时,迭代开始通过循环传递“undefined”对象。表面上看,将连接对象设置为删除似乎会影响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 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();
            }
        });
    }
};