这应该是一个非常微不足道的问题,但它让我发疯! 我不喜欢本教程的第1步,但我无法工作....所以这是我的代码:
/* Model definition */
var PrivateSalesMenuModel = function () {
var self = this;
this.privateSales = ko.observableArray();
this.addPrivateSale = function (privateSale) {
var newPs = new PrivateSaleMenuItem(privateSale);
self.privateSales.push(newPs);
};
};
var PrivateSaleMenuItem = function (ps) {
this.title = ps.Description;
this.hasActual = ps.HasActual;
this.hasSale = ps.HasSale;
this.listaId = ps.ListaId;
this.isSelected = false;
};
/* end model definition*/
var privateSalesMenuModel = new PrivateSalesMenuModel();
ko.applyBindings(privateSalesMenuModel);
非常简单......我有一个代表我的模型的对象,它是其他对象的集合,称为PrivateSaleMenuItem
。
问题是addPrivateSale
没有按预期工作。我在代码中的某处
privateSalesMenuModel.addPrivateSale(ps);
其中ps是由其他JavaScript函数创建的对象...无论如何,我在PrivateSaleMenuItem的构造函数中需要的对象,所以它的一致性不是问题。
问题似乎是self.privateSales.push(newPs);
不起作用......在该位置之后,privateSalesMenuModel.privateSales
的数量仍为0。
那是为什么?
被修改
我在jsFiddle中给出了一个同样精确代码的示例,并且它运行正常,所以我怀疑在我的页面中有一些东西让observableArray的push方法停止工作......我怎么能找出它是什么?
ops ... jsfiddle http://jsfiddle.net/YBHf5/
的链接答案 0 :(得分:1)
看起来你在这里混合了这个和我自己的代码:
var PrivateSalesMenuModel = function () {
var self = this;
this.privateSales = ko.observableArray();
this.addPrivateSale = function (privateSale) {
var newPs = new PrivateSaleMenuItem(privateSale);
self.privateSales.push(newPs);
};
};
将它们改为全部使用自我修复如下:
var PrivateSalesMenuModel = function () {
var self = this;
self.privateSales = ko.observableArray();
self.addPrivateSale = function (privateSale) {
var newPs = new PrivateSaleMenuItem(privateSale);
self.privateSales.push(newPs);
};
};
请在这里看到工作小提琴:
答案 1 :(得分:0)
问题解决了....这是一个微不足道的问题,有一个简单的解决方案:我只需要在页面末尾推送外部脚本声明。 我在页面顶部,在正文内部,但在其他任何内容之上都有脚本(问题中提供的代码存在)。 只需将脚本引用放在正文的末尾,一切都按预期再次运行。 很抱歉浪费你的时间......但是这个小问题很难找到,因为调试时原因并不清楚