我刚刚开始学习棱角,并一直在与约翰爸爸的课程的Pluralsight,试图让我的头绕它。我有一个问题,把一些数据绑定到一个页面,结果是一个不正确的大小写。
我有:
<small>{{s.timeslot.name}}</small> at <small>{{s.room.name}}</small>当我应该:
<small>{{s.timeSlot.name}}</small> at <small>{{s.room.name}}</small>很好,但我只是不明白为什么。
此方法从Web返回数据(注意,时隙中没有camelcase ):
[HttpGet]
public object Lookups()
{
var rooms = _repository.Rooms;
var tracks = _repository.Tracks;
var timeslots = _repository.TimeSlots;
return new { rooms, tracks, timeslots };
}名为datacontext.js的角服务具有以下对象,可在Web名称和Breeze实体名称之间映射(至少据我理解)。
var entityNames = {
attendee: 'Person',
person: 'Person',
speaker: 'Person',
session: 'Session',
room: 'Room',
track: 'Track',
timeslot: 'TimeSlot'
}还有一些更多的功能涉及缓存数据,并在客户机上扩展模型,但是没有任何地方引用timeSlot (使用camelCase)。
这里发生了什么,HTML大小写是由角强制的吗?
编辑:感谢沃德的回答。对于任何在同一课程中有类似问题的人来说,breeze.NamingConvention.camelCase.setAsDefault()在entityManagerFactory.js中被称为。
发布于 2013-12-20 22:04:39
问题是"TimeSlot“在不同地方的拼写有点”粗俗“。
绑定到"s“是与Session类型的绑定。Session类型本身指示其任何导航属性的拼写。其他一切都无关紧要。
Session的元数据是基于C#“会话”类在服务器上生成的。在那里,您会发现导航属性拼写为"TimeSlot“。
您的客户正在使用Breeze NamingConvention.camelCase在JavaScript应用程序中在首选的C#和首选camelCasing之间进行转换。因此,在Breeze客户机上,您应该期望"timeSlot“导航属性成为"TimeSlot”。
实体名称不是由
NamingConvention翻译的(此时)。C#类型"TimeSlot“也拼写为JavaScript类型的"TimeSlot”。
任何其他地方的其他拼写都与此绑定无关。
您可能会发现"查询结果调试“文档主题很有帮助。
https://stackoverflow.com/questions/20703338
复制相似问题