我的任务是为自从离开公司的人写的应用程序添加一项功能。这是用C#/ Knockout / Breeze / Durandal实现的。我想知道是否有人可以回答我关于淘汰赛和C#互动的内部运作的一些问题:
1)为什么淘汰赛将现有的ICollection正确转换为observableArray,而不是我已添加到模型中的新ICollection?
2)将Model转换为obs / obsArrays的机制是什么?我猜这与数据如何被撤回有关,但我不确定。
我没有看到任何将现有Collection初始化为observableArray的js代码,没有
vm.existingCollection = ko.observableArray();
他只是在源代码中使用它
vm.existingCollection.push(stuff);
编辑以包含一些供参考的代码
这是我正在使用的模型代码:
public class SimCompare : Report
{
public string LeftGraphName { get; set; }
public int? LeftConsolidationId { get; set; }
public int LeftAsOfDateOffset { get; set; }
public int LeftSimCompareSimulationTypeId { get; set; }
public virtual Consolidation LeftConsolidation { get; set; }
public virtual ICollection<SimCompareSimulationType> LeftSimCompareSimulationTypes { get; set; }
public string RightGraphName { get; set; }
public int? RightConsolidationId { get; set; }
public int RightAsOfDateOffset { get; set; }
public int RightSimCompareSimulationTypeId { get; set; }
public virtual Consolidation RightConsolidation { get; set; }
public virtual ICollection<SimCompareSimulationType> RightSimCompareSimulationTypes { get; set; }
public bool IsQuarterly { get; set; }
public virtual ICollection<SimCompareScenarioType> SimCompareScenarioTypes { get; set; }
}
然后有一个simcompareconfig.js文件,它以这样的方式开始:
define([
'services/globalcontext',
'viewmodels/simulationselectconfig',
'durandal/app'
],
function (globalContext, simulationselectconfig, app) {
var simCompareVm = function (simCompare) {
var self = this;
this.simCompare = simCompare;
...
现有的函数可以添加一个带有如下所示行的scenarioType:
simCompare().simCompareScenarioTypes().push(newSimCompareScenarioType);
但是simCompareScenarioTypes()没有在JS方面定义(我可以看到)。但是在C#模型中有类似的定义。这就是让我相信模型以某种方式在幕后进行映射的原因。
任何帮助都受到了热烈的赞赏。