【问题标题】:How to list students for every course in knockout and durandal in SPA如何在 SPA 的淘汰赛和 durandal 中列出每门课程的学生
【发布时间】:2014-09-24 13:21:10
【问题描述】:

这是我的课:

public class Course : BaseEntity
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public virtual int? TeacherId { get; set; }
        public virtual Teacher Teacher { get; set; }
        public virtual IList<CourseStudent> CourseStudents { get; set; } 
    }
}, 
 public class CourseStudent : BaseEntity
    {
        public virtual int CourseId { get; set; }
        public virtual Course Course { get; set; }
        public virtual int StudentId { get; set; }
        public virtual Student Student { get; set; }
    }
}

我在 Breeze Controler 中定义了课程,这是在我的视图中显示的,课程名称、教师和描述,但热显示特定课程的学生。

【问题讨论】:

    标签: knockout.js breeze durandal-2.0


    【解决方案1】:

    使用“属性路径扩展”查询技术预先加载每个课程的学生:

    http://www.breezejs.com/documentation/query-examples#PropertyPathExpand

    html/knockout 绑定看起来像这样:

    <ul data-bind="foreach: courses">
       <li>
          <h1 data-bind="text: Name" />
    
          <ul data-bind="foreach: CourseStudents">
             <li data-bind="text: Student.Name" />
          </ul>   
       </li>
    </ul>
    

    【讨论】:

    • Meta Stack Overflow我试图扩展但它不起作用我在这里做错了但我现在不知道-这是我的查询:var query = EntityQuery.from(' Courses') .expand('Teacher','CourseStudent') .orderBy('name');
    • 缺少's':.expand('Teacher', 'CourseStudent**s**')
    • 我已经解决了这个问题,但它显示“无法解析绑定,引用错误”,这是我的 html :
      Name:
      ?
      教师姓名:
      学生名单:
      我用 FOREACH 也显示同样的错误
    • 我真的需要帮助...请帮助我
    • 我认为有两个问题:1)绑定中的不正确大写 - 例如with: teacher应该是with: Teacher,因为课程实体的'Teacher'属性名称是大写的。与课程名称和学生姓名绑定等相同。 2) 我认为 text: Student.Name 绑定不会起作用,除非您将查询中的扩展调用更改为 .expand('Teacher', 'CourseStudents.Student')
    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 2015-02-24
    • 2014-08-01
    • 2015-04-10
    • 2013-04-15
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多